2012-04-20 15 views
0

私は可変配列に格納しているビューコントローラを持っています。ARCがオブジェクトを割り当て解除するのはなぜですか?

- (void)pushViewController:(KAViewController *)viewController 
{ 
    [self.viewControllers addObject:viewController]; 

    if (self.count == 0) 
     [self.view addSubview:viewController.view]; 
    else 
     [self transitionFromView:self.currentViewController.view toView:viewController.view]; 
} 

配列(viewControllers)は次のように定義されます

@property (nonatomic, retain) NSMutableArray *viewControllers; 

ビューにはボタンがあり、その上に私をクリックしたときに、私は次のメッセージが出ます:

[KAGameInfoViewController performSelectorを:withObject:withObject:]: 解放されたインスタンスにメッセージが送信されました。0x6e6e900

私は0x6e6e900が私のView Controllerのアドレスであることを確認しました。

どのような考えですか?

EDIT

問題を修正ARCをオフにします。あなたがし忘れたので、おそらく

+0

'self.count'プロパティとは何ですか? –

+0

私はこのコードがすべてあなたの 'KAGameInfoViewController'クラスの一部であると仮定しています。それは 'カウント'と呼ばれるivarを持っていますか?そうでなければ 'if(self.count == 0)'が問題になるかもしれません。 –

+0

ARCをオフにすることは、コードの割り当て問題を隠す可能性があるため、優れた解決策ではない可能性があります。 –

答えて

5

self.viewControllersはnilです:

self.viewControllers = [[NSMutableArray alloc] init]; 

どこでも。

+0

私は諜報の一時的な欠如を願う: – Quentamia