参考此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委托中,我对它应该如何工作感到有些困惑。谢谢!
答案 0 :(得分:0)
这是因为AppDelegate
的实例变量,而不是您的视图控制器。如果将声明和初始化移动到视图控制器,则错误将消失。它会不使它成为全局变量,如果它对您有用,那就很好。
如果它对您不起作用,请将变量设为真正的全局变量:将声明移出应用委托,然后添加extern
关键字,如下所示:
extern NSMutableSet *statesTouched;
现在在.m文件中添加定义,如下所示:
NSMutableSet *statesTouched;
确保定义在@implementation
块之外。