访问类之间的NSMutableArray的内容

时间:2011-03-14 01:57:22

标签: iphone ios class nsmutablearray

我的一个课程中有一个NSMutableArray。但我需要从另一个类访问该数组中包含的信息。我尝试过使用属性,但是我认为它错了,或者它不适用于我。我试过NSUserDefaults但也没有运气。我尝试使用

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

NSMutableArray *snacksLocationArray = main.snacksArray;

但这似乎都不起作用。 这两个类名为:MainGameKool

提前致谢。

2 个答案:

答案 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;
}