2011-03-14 58 views
0

我在我的一個類中有一個NSMutableArray。但我需要從另一個類訪問該數組中包含的信息。我嘗試過使用屬性,但是我的信仰做錯了,或者它不適合我。我試過NSUserDefaults,但也沒有運氣。我試着用訪問類之間的NSMutableArray的內容

MainGame *mainGameClass = [[MainGame alloc]init];

NSMutableArray *snacksLocationArray = main.snacksArray; 

但沒有這似乎工作。 這兩個類被命名爲:MainGameKool

在此先感謝。

回答

0

你可以使用一個單身,你有你的mutablearray集作爲一個屬性。所以你可以從你的應用程序的任何地方打電話給[MainGame sharedGame].snacksArray

這是你的sharedGame方法應該是什麼樣子:

static MainGame *sharedGame = nil; 

+ (MainGame *)sharedGame { 

    if(sharedGame == nil) 
     sharedGame = [[super alloc] init]; 

    return sharedGame; 
} 
+0

以及我不明白這一點。但是,謝謝。我把這個方法放在MainGame中,然後我像你從'Kool'所說的那樣調用這個數組,像這樣:NSMutableArray'* myArray = [MainGame sharedGame] .snacksLocationArray;'我得到一個錯誤; snackLocationArray不是該結構或工會的成員。你是什​​麼意思設置爲一個屬性。 – Andrew 2011-03-14 02:13:03

+0

此外,感謝您的即時響應 – Andrew 2011-03-14 02:13:46

+0

看起來您缺少Objective-C編程的一些基本概念,因爲屬性是一個相當常見的概念。我建議你挖洞/購買一些能夠幫助你進一步研究的書籍。也許經過Mike Rundle的這個偉大的教程:http://designthencode.com/scratch/ – samvermette 2011-03-14 14:57:49

1

如果您提供訪問您的數組,那麼任何人都應該能夠訪問它。使用singleton更像是將它變成一個全局變量,而不僅僅是允許訪問它。

// In MainGame.h 
@interface MainGame : NSOBject { 
    NSMutableArray *snacksLocationArray; 
} 
@property (retain) NSMutableArray *snacksLocationArray; 
@end 

// In MainGame.m 
@implementation MainGame 
@synthesize snacksLocationArray; 
@end 

// In Kool.h 
@interface Kool : NSObject { 
} 
- (void) doSomethingFunkyWithSnacksArray: (NSMutatableArray *) a; 
- (void) doSomethingWeirdWithMainGame: (MainGame *) g; 
@end 

// In Kool.m 
@implementation Kool 
- (void) doSomethingFunkyWithSnacksArray: (NSMutatableArray *) a { 
    [a addObject: @"Funky"]; 
} 
- (void) doSomethingWeirdWithMainGame: (MainGame *) g { 
    [self doSomethingFunkyWithSnacksArray: g.snacksLocationArray]; 
    [g.snacksLocationArray addObject: @"Weird"]; 
} 

這是做你在想什麼嗎?允許您從Kool中的方法訪問數組。 「時髦」和「奇怪」將被妥善保存在陣列中以便在MainGame中使用。

您也可以使用可能無法訪問MainGame對象的方法將數組設置爲Kool中的數組以訪問數組。

+0

' - (void)doSomethingWeirdWithMainGame:(MainGame *)g;'爲我返回一個錯誤 – Andrew 2011-03-15 01:16:05