ビューコントローラーにテーブルビューを表示させました。以下を参照してください。
//.h file
@interface CoreDataViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
//NSArray property
@property (retain, nonatomic) NSArray *arr;
@end
//.m file
- (void)viewDidLoad {
//fetch data from core data, pass to arr property
//context is a instance of NSManagedObjectContext
arr = [context executeFetchRequest:request error:nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (arr == nil) {
return 0;
}
return [arr count]; //program stop here, nothing showed up in output console
}
xcode Profile(Instrument) は、リターン [arr count] にゾンビ オブジェクトがあることを示しています。 おそらくバックグラウンドで何が起こったのか混乱していますが、プロパティはiOSによってリリースされる可能性がありますが、プロパティには.hファイルに保持キーワードがあります。
NSArray を次のように NSMutableArray に置き換えると、この問題を解決できるソリューションが見つかります。
@interface CoreDataViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
//change to NSMutableArray
@property (retain, nonatomic) NSMutableArray *arr;
@end
- (void)viewDidLoad {
//convert NSArray to NSMutableArray
arr = [[context executeFetchRequest:request error:nil] mutableCopy];
}
mutableCopyメソッドに保持または自動解放はありますか?