Я хотел бы использовать мой AppDelegate для хранения объекта, который будет доступен для любых других классов. Я объявил эту AppDelegate так:Переменная AppDelegate, используемая как глобальная переменная, не работает
@interface MyAppDelegate : UIResponder <UIApplicationDelegate>
{
MyClass *tracker;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ICViewController *viewController;
@property (retain, nonatomic) MyClass *tracker;
@end
Я синтезировать трекер и в применении: didFinishLaunchingWithOptions: я установить один NSString в этом объекте, как это:
self.tracker = [[MyClass alloc] init];
self.tracker.testGlobal = @"global funguje";
Когда мне нужно, чтобы получить доступ трекер где-нибудь еще в некоторых других классах я использую этот код:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
MyClass *trackerTEST = appDelegate.tracker;
NSLog(@"TEST : %@",trackerTEST.testGlobal);
Проблема в том, что testGlobal имеет значение NULL. Что я делаю не так? Также здесь представлены файлы классов для MyClass:
@interface MyClass : NSObject
{
NSString *testGlobal;
}
@property (retain, nonatomic) NSString *testGlobal;
@end
@implementation MyClass
@synthesize testGlobal = _testGlobal;
@end
Спасибо за любую помощь!
Вы говорите, что 'testGlobal' равна нулю, но вы уверены, что' 'trackerTEST' и appDelegate' не тоже ноль? – jtbandes
хорошо узнал, что appDelegate в порядке, но trackerTEST - это ноль ... хммм ... что я тут делаю неправильно? :) –