ARCに問題があります。数時間のデバッグの後、私はあきらめてここにチェックすることにしました。ARCがインスタンス変数を解放しない
基本的に私はMainViewController
を持っていて、PreviewsView
のインスタンスを作成しています。 PreviewsView
で
私は、デリゲートとデータソースのプロパティがあります。
@property (nonatomic, unsafe_unretained) IBOutlet id<PreviewsDataSource> dataSource;
@property (nonatomic, unsafe_unretained) IBOutlet id<PreviewsDelegate> delegate;
私は、MainViewController
にPreviewsView
のインスタンスを作成して表示し、インスタンス変数として保存するためにそれを追加し、delegate
とdataSource
としてself
を設定します。
- (void)addPreviews {
previewsView = [[PreviewsView alloc] initWithFrame:CGRectMake(0, 75, 1024, 480)];
previewsView.dataSource = self;
previewsView.delegate = self;
[self.view addSubview:previewsView];
}
ナビゲーションコントローラーからMainViewController
を削除すると、割り当てが無効になりますが、previewsView
はまだ存在します(W HY?)を呼び出し、実際に[self.delegate doSomeStuff]
をトリガするメソッドを実行します。 MainViewController
はすでに割り当てを解除しています - EXC_BAD_ACCESS
をスローします。したがって、基本的
:
MainViewController
のインスタンスPreviewsView
のインスタンスを所有している(previewsView)MainViewController
の解除インスタンス後PreviewsView
にdelegate
とdataSource
として割り当てられMainViewController
の- インスタンスは、previewsViewがまだ生きているとランニング。
おかげさまで
'(addPreviews'メソッドで)' previewsView'という名前のビューを作成するが、完全に異なるサブビュー( 'previewsCaroucel')を追加することは意図的ですか? – omz
申し訳ありませんが、ここに投稿する前に変数の名前を変更しています – OgreSwamp