2

AppDelegate を使用して、他のクラスからアクセスできるオブジェクトを保存したいと思います。この AppDelegate を次のように宣言しました。

@interface MyAppDelegate : UIResponder <UIApplicationDelegate>
{
    MyClass *tracker;
}

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ICViewController *viewController;
@property (retain, nonatomic) MyClass *tracker;

@end

トラッカーを合成し、application:didFinishLaunchingWithOptions: で、次のようにそのオブジェクトに NSString を 1 つ設定します。

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

助けてくれてありがとう!

4

4 に答える 4

4

遅くまで答えているかもしれませんが、シングルトンパターンを見ることができます。

ソフトウェアエンジニアリングでは、シングルトンパターンは、クラスのインスタンス化を1つのオブジェクトに制限することにより、シングルトンの数学的な概念を実装するために使用されるデザインパターンです。これは、システム全体でアクションを調整するために1つのオブジェクトが必要な場合に役立ちます。この概念は、オブジェクトが1つしかない場合に効率的に動作するシステム、またはインスタンス化を特定の数のオブジェクトに制限するシステムに一般化されることがあります。

ObjCの実装は次のとおりです。http://getsetgames.com/2009/08/30/the-objective-c-singleton/

于 2012-04-20T10:20:43.763 に答える
2

application:didFinishLaunchingWithOptions:を追加して、 が呼び出されているかどうかを確認しNSLog(@"...")ます。nil の場合trackerTEST、正しく初期化されていない可能性があります。

于 2012-04-20T10:10:43.930 に答える
0

に変更@synthesize testGlobal = _testGlobal;して@synthesize testGlobal;、再試行してください。

于 2012-04-20T10:04:07.300 に答える
0
@interface MyAppDelegate : UIResponder <UIApplicationDelegate>
{
    MyClass *tracker;
}

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ICViewController *viewController;
@property (retain, nonatomic) MyClass *tracker;

@end

@property トラッカーと var トラッカーがあるのはなぜですか?

プロパティのみを削除してみてくださいMyClass *tracker;。十分なはずです。

于 2012-04-20T09:52:24.353 に答える