创建全局NSMutableSet

时间:2012-02-17 01:33:01

标签: objective-c ios core-graphics

参考此SO问题的答案:Keeping track of changes in a UIView 我需要帮助设置NSMutableSet的全局方面。在我的appdelegate.h文件中,我有这个:

@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
ViewController *viewController;
NSMutableSet *statesTouched;
}

这在我的appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
statesTouched = [[NSMutableSet alloc]init];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}

在我的viewcontroller.h文件中,我正在添加如下对象:

[statesTouched addObject:touchedStateName];

但是我收到了statesTouched的未声明标识符。我从来没有尝试过将这样的东西放到我的app委托中,我对它应该如何工作感到有些困惑。谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为AppDelegate的实例变量,而不是您的视图控制器。如果将声明和初始化移动到视图控制器,则错误将消失。它会使它成为全局变量,如果它对您有用,那就很好。

如果它对您不起作用,请将变量设为真正的全局变量:将声明移出应用委托,然后添加extern关键字,如下所示:

extern NSMutableSet *statesTouched;

现在在.m文件中添加定义,如下所示:

NSMutableSet *statesTouched;

确保定义在@implementation块之外。