sqlliteデータベースにいくつかのデータが保存されているiphoneアプリケーションを開発しています。ビューがロードされたら、データベースからバックグラウンドスレッドでデータをロードしたいと思います。問題は、アプリケーションがクラッシュし続けることであり、その理由がわかりません。
コード:
-(id) init
{
if((self=[super init]))
{
[self performSelectorInBackground:@selector(loadList) withObject:nil];
}
}
-(void) loadList
{
@autoreleasepool
{
Loader * loader = [[Loader alloc] init];
NSMutableArray * array = [loader getItemList];
[array retain];
NSLog(@"Got %d items",[array count]);
[self performSelectorOnMainThread:@selector(createList:) withObject:array waitUntilDone:false];
[loader release];
}
}
-(void) createList: (NSMutableArray*) array
{
items = array;
int i;
Item * it;
for(i = 0; i < [items count]; i++)
{
it = [items objectAtIndex: i];
[it getName]; // crashes
// populate the list
}
}
ローダーは、Itemオブジェクトを含むNSMutableArrayを返します。アイテムgetName(NSString *を返す)を呼び出すと、アプリケーションがクラッシュします。アイテム名のプロパティがリリースされているため、クラッシュすることがわかりました。私は何が間違っているのですか?
ありがとう!