создание глобального NSMutableSet - PullRequest
0 голосов
/ 17 февраля 2012

В отношении ответа на этот вопрос SO: Отслеживание изменений в 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. Я никогда не пытался вставить что-то подобное в мой делегат приложения, и я немного запутался, как это должно работать. Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2012

Это потому, что переменная экземпляра вашего AppDelegate, а не ваш контроллер представления.Если вы переместите объявление и инициализацию в свой контроллер представления, ошибка исчезнет.Однако не сделает ее глобальной переменной, что хорошо, если она работает для вас.

Если она не работает для вас, сделайте переменнуюдействительно глобальный: удалите объявление из делегата приложения и добавьте ключевое слово extern, например:

extern NSMutableSet *statesTouched;

Теперь добавьте определение в файл .m, например:

NSMutableSet *statesTouched;

Убедитесь, что определение находится за пределами блока @implementation.

...