我正在开发一个 iphone 应用程序,它的一些数据存储在 sqllite 数据库中。当我的视图加载时,我想在后台线程上加载数据库中的数据。问题是应用程序不断崩溃,我不知道为什么。
编码:
-(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
}
}
Loader 返回一个带有 Item 对象的 NSMutableArray。当我调用项目 getName(返回 NSString*)时,应用程序崩溃。据我了解,它崩溃是因为项目名称属性正在被释放。我究竟做错了什么?
谢谢!