我的一个课程中有一个NSMutableArray
。但我需要从另一个类访问该数组中包含的信息。我尝试过使用属性,但是我认为它错了,或者它不适用于我。我试过NSUserDefaults
但也没有运气。我尝试使用
MainGame *mainGameClass = [[MainGame alloc]init];
NSMutableArray *snacksLocationArray = main.snacksArray;
但这似乎都不起作用。
这两个类名为:MainGame
和Kool
提前致谢。
答案 0 :(得分: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
中的方法访问数组。 “Funky”和“Weird”将正确存储在数组中,以便在MainGame
中使用。
您还可以在Kool
内为数组设置ivar,以便使用可能无法访问MainGame
对象的方法访问数组。
答案 1 :(得分:0)
你可以使用一个单例,你可以将mutablearray设置为属性。因此,您可以在应用内的任何位置调用类似[MainGame sharedGame].snacksArray
的内容。
以下是您的sharedGame
方法的样子:
static MainGame *sharedGame = nil;
+ (MainGame *)sharedGame {
if(sharedGame == nil)
sharedGame = [[super alloc] init];
return sharedGame;
}