2012-09-24 15 views
5

何が起きているのか把握できません。UIViewControllerが画面上にあるにもかかわらず割り当て解除されている理由

ページビューでスクロールビューを使用するiPhoneアプリを構築しています。

[self.storyboard instantiateViewControllerWithIdentifier:@"identifier"]; 

私は可変配列へのView Controllerを追加し、サブビューとしてスクロールビューに自分の意見を追加します。スクロールビューは、そのビューコントローラ呼び出すことにより、ストーリーボードからアップロードされているいくつかのビューが含まれています。 画面に表示された後、ビューコントローラが割り当て解除されるため、target-actionsはもう機能しません。

私はゾンビオブジェクトを有効にすると、デバッガは、コントローラにアクションを送る上でこれを書いた:

***は - [StreamingViewController performSelector:withObject:withObject:]:割り当て解除インスタンス0x914f0e0に送信されたメッセージ

私は本当にこれを修正しようとしましたが、成功しなかったので、すべての助けが大変ありがとうございました。

いくつかのより多くのコード:あなたはARCのものを使用している場合は、もはや何かへの有効なポインタを持っている場合

StreamingViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Streaming View Controller"]; 

[self.pageControllers addObject:controller]; // adding view controller to mutable array 

controller.view.frame = self.scrollView.frame; 
[self.scrollView addSubview:controller.view]; 
+0

pageControllerはどのように宣言されていますか? – mark

+0

pageControllersはプライベート@propertyとして宣言されています – boeqqsh

答えて

3

一般的に脱落しません。したがって、あなたのケースでは、あなたのView Controllerは範囲外になり、解放されます。ビューは、self.scrollViewによって保持されているので、引き続き保持されます。配列にView Controllerを追加すると、配列が正しくインスタンス化されている場合にのみ問題が解決されます。 Popertiesは自動的にインスタンス化されません。アクセサをオーバーライドしないかぎり、このプロパティを使用してもインスタンス化されません。 Cocoaの性質上、完全に有効なコードであるため、オブジェクトをnilプロパティに追加しようとすると、エラーやメッセージを受け取ることはありません。

pageControllerをどのように作成しているかを確認し、正しくインスタンス化していることを確認してください。 より前に入力してください。

例えば、 self.pageControllers = [[NSMutableArray alloc] init];

+0

これはちょうどこのコード行です。どうもありがとうございます! :) – boeqqsh

+0

3年後もまだ便利!ありがとうございました! – PaperThick

関連する問題