ARC に問題があります。数時間のデバッグの後、あきらめて、ここで確認することにしました。
基本的に、のMainViewController
インスタンスを作成する がありますPreviewsView
。
私はPreviewsView
デリゲートとデータソースのプロパティを持っています:
@property (nonatomic, unsafe_unretained) IBOutlet id<PreviewsDataSource> dataSource;
@property (nonatomic, unsafe_unretained) IBOutlet id<PreviewsDelegate> delegate;
PreviewsView
inのインスタンスを作成し、 andとしてMainViewController
設定self
し、ビューに追加してインスタンス変数として保存します。delegate
dataSource
- (void)addPreviews {
previewsView = [[PreviewsView alloc] initWithFrame:CGRectMake(0, 75, 1024, 480)];
previewsView.dataSource = self;
previewsView.delegate = self;
[self.view addSubview:previewsView];
}
次に、MainViewController
ナビゲーションコントローラーから削除すると、ACRの割り当てが解除されますが、previewsView
まだ存在し(なぜ???)、トリガーするメソッドを実際に実行しています[self.delegate doSomeStuff]
。すでに解放されているようMainViewController
に、それはスローしEXC_BAD_ACCESS
ます。
だから基本的に:
- (previewsView)のインスタンスを
MainViewController
所有するインスタンスPreviewsView
MainViewController
割り当てられた asdelegate
およびdataSource
inのインスタンスPreviewsView
- のインスタンスの割り当てを解除した後
MainViewController
、previewsView はまだ有効で実行中です。
なぜ何かアイデアはありますか?? ありがとう。