Если вы предоставляете доступ к вашему массиву, тогда любой должен иметь к нему доступ. Использование 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
. «Funky» и «Weird» будут правильно сохранены в массиве для использования в MainGame
.
Вы также можете установить ivar для массива в пределах Kool
для доступа к массиву, используя методы, которые могут не иметь доступа к объекту MainGame
.