2009-08-20 22 views
1

私は奇妙な動作が発生しています。 ビューコントローラでは、私のアプリケーションデリゲート([[UIApplication sharedApplication] delegate])の参照を保持したいと思いますself.appDelegate = [[UIApplication sharedApplication] delegate];常に0x0

私はコントローラがインスタンス化されるときに設定するプロパティがあります。 デバッガのデバイスのプロパティが常に0x0になっています。

私がテストにこのコードを書いた:私の場合

 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) 
    {  
     AppDelegate *localVar = [[UIApplication sharedApplication] delegate]; // OK 
     self.appDelegate = [[UIApplication sharedApplication] delegate]; // 0x0 
    } 
    return self; 
} 
 

私はappDelegateが設定されている、私もそれが

 

- (void)setAppDelegate:(AppDelegate *)delegate 
{ 
    appDelegate = delegate; // delegate is a valid address but appDelegate is still showing 0x0 
} 
 

と呼ばれていることを確認するために、セッターを書くことを確信している私は疑問に思ってAppDelegateクラスはよく書かれています。

アイデアはありますか?

私は失われています...

おかげで、あなたのビューコントローラがロードされた時点で

答えて

1

は、デリゲートは、おそらくまだインスタンス化またはのUIApplicationオブジェクトに設定されていません。これはすべてペン先で行われますが、順序は任意です。

2

ハーズは、あなたが試すことができますいくつかのものだ -

  1. あなたself.appDelegateを宣言しているどのように?それはAppDelegateのオブジェクトですか?
  2. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNilにブレークポイントを設定して、selfを参照してください。それはAppDelegateのインスタンスですか?
  3. 私はAppDelegateのインスタンスを取得したいときも、私はこれを行う - UIApplicationデリゲートはだけにしてインスタンス化します最初のものであるようAppDelegate *localVar = (AppDelegate *)[[UIApplication sharedApplication] delegate];は(AppDelegate*の型キャストに注目してください)
  4. 私は非常にnikoliaが指摘する何を疑うことも可能ですあなたのviewControllerが呼び出されます。

希望します。

関連する問題