私はのプロパティを持っています
@property (nonatomic, strong) NSMutableArray *timesArray;
UITableViewにデータを入力するために使用されます。ビューをクリアしたいときは、次のようにします。
- (void)clearView {
self.nameField.text = @"";
self.noteField.text = @"";
if ([_timesArray count] > 0) {
[self.timesArray removeAllObjects];
[self.customTableView reloadData];
}
}
removeAllObjectsはクラッシュを引き起こします。理由はわかりません。私は周りを見回しました、そして、多くの投稿はオブジェクトが過剰にリリースされていることについて話します。ARCを使用していて、オブジェクトに対してretain / releaseを呼び出さない場合、これはどのように発生しますか。私の_timesArrayは、UIDatePickerから取得したNSDateオブジェクトを保持するだけです。
私のスタックトレースは次のようになります。
私のinsertPillは次のようになります:
- (void)insertPill:(id)sender {
//[[NSNotificationCenter defaultCenter] postNotificationName:InsertPillNotification object:self];
[self clearView];
}
私がすべてのオブジェクトを削除せず、ただ実行する場合:
NSMutableArray *emptyArray = [[NSMutableArray alloc] initWithCapacity:0];
self.timesArray = emptyArray;
これは機能します。しかし、オブジェクトを削除しても機能しない理由を知りたいのですが。
編集:viewDidLoadで配列を初期化します:
_timesArray = [[NSMutableArray alloc] initWithCapacity:0];
配列に新しいオブジェクトを追加する場合は、次のようにします。
NSMutableArray *tempUnsortedArray = [[NSMutableArray alloc] initWithArray:_timesArray];
[tempUnsortedArray addObject:_datePicker.date];
self.timesArray = tempUnsortedArray;
配列がデータを追加する方法が問題の原因であるかどうかはわかりません。