私はUIView
を保持するを持っていますUITableView
。このテーブルには、が入力されていNSMutableArray
ます。
UIViewのinitWithFrame:
メソッドで配列とテーブルの両方を初期化しました。
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
bookTable = [[UITableView alloc]initWithFrame:CGRectMake(100, 108, 260, 535)];
bookArray = [[NSMutableArray alloc]init]; //this array will be populated later
//other codes
}
return self;
}
私はそれらをリリースしますdealloc
:
- (void)dealloc
{
[bookTable release];
[bookArray release];
[super dealloc];
}
問題は、でアプリがクラッシュしたときですdealloc
。エラーが発生します:[CALayer release]: message sent to deallocated instance 0x82db660
私は自分のコードのいたるところを見て、何もオーバーリリースしなかったと確信しています。を削除することにしました[bookArray release]
がdealloc
、クラッシュしなくなりました。を実行しましたが、Analyze
リークの可能性はありません。
誰かがdeallocで配列を解放するとクラッシュが発生する理由を私に説明できますか?
注: テーブルと配列はどちらもビューのインスタンス変数です。
編集: 配列にデータを入力するためのコード:
NSString *sql = [NSString stringWithFormat:@"SELECT BookName FROM books WHERE UserID=%d", userId];
booksArray = [sqlite executeQuery:sql];
SQLラッパーを使用していることに注意してください。