2012-02-17 3 views
0

Относительно ответа на этот вопрос SO: Keeping track of changes in a UIView Мне нужна помощь в создании глобального аспекта NSMutableSet. В моем appdelegate.h файл я получил это:Создание глобального NSMutableSet

@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]; 

, но я получаю необъявленный идентификатор для stateTouched. Я никогда не пробовал помещать что-то подобное в свой делегат приложения, и я немного смущен тем, как это должно работать. Благодаря!

ответ

0

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

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

extern NSMutableSet *statesTouched; 

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

NSMutableSet *statesTouched; 

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

Смежные вопросы