可変配列に格納されている/格納されているいくつかのアイテムでdeallocメソッドを実行しようとしていますが、それを実現する方法が見つからないようです。
大規模なARCプロジェクトで作業しているときにこの問題が発生し、この投稿で答えが見つかりました。オブジェクトをnilに設定すると、deallocメソッドが呼び出されません。その回答を読んだ後、ARCが問題のコード(以下)をどのように処理するかを理解したと感じましたが、非常に単純なテストプロジェクトで実行した後、同じ結果が得られました。
メインのViewControllerで、可変配列(強力なプロパティ)を初期化し、それに他のViewControllerを追加します。次に、すべてのオブジェクトを削除します。
- (void)viewDidLoad{
[super viewDidLoad];
containerArray = [[NSMutableArray alloc]init];
for(int i = 0; i < 10; i++){
//item +1 (item at +1)
Item *item = [[Item alloc]initWithNibName:nil bundle:nil];
//item +1 (item at +2)
[containerArray addObject:item];
//ARC should release item -1 (item at +1...I think)
}
//removeAllObjects should release each item -1 (item(s) at 0)
[containerArray removeAllObjects];
//dealloc should be called...
}
アイテムビューコントローラの場合:
-(void)dealloc{
NSLog(@"item dealloc");
}
どんな助けでも大歓迎です。