Мое приложение для iPhone продолжает падать, и за последнюю кровавую неделю я сократил его до одной строчки:
NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
Я получаю правильный результат из вышеперечисленного, но приложение падает после обращения к нему (EXC_BAD_ACCESS
).
Как мне просто скопировать содержимое fetchResults
, чтобы я мог поиграть с ним?
Я пробовал
NSArray *retVal = [[NSArray alloc] initWithArray:fetchResults];
NSArray *retVal = [[NSArray alloc] initWithArray:[fetchResults copy]];
NSArray *retVal = [[NSArray alloc] initWithArray:[fetchResults retain]];
но единственное, что не приводит к сбою приложения, это
NSArray *retVal = [[NSArray alloc] initWithArray:nil];
Может ли кто-нибудь мне помочь? Думаю, мне понадобится урок по управлению памятью в Obj-C.
EDIT:
Вот более полный пример сбоя кода:
NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
[request release];
NSMutableArray *retVal = [NSMutableArray arrayWithCapacity:0];
for(Job *job in fetchResults){
//NSLog(@"dev: %@",job.lastmod_device);
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[job.jobkey copy], @"entitykey",
[NSNumber numberWithInt:[job.lastmod_device timeIntervalSince1970]], @"job_lastmod_device",
[NSNumber numberWithInt:[job.lastmod_server timeIntervalSince1970]], @"job_lastmod_server",
[NSNumber numberWithInt:[job.customer.lastmod_device timeIntervalSince1970]], @"customer_lastmod_device",
[NSNumber numberWithInt:[job.customer.lastmod_server timeIntervalSince1970]], @"customer_lastmod_server",
[NSNumber numberWithInt:[job.productionschedule_lastmod_device timeIntervalSince1970]], @"productionschedule_lastmod_device",
[NSNumber numberWithInt:[job.productionschedule_lastmod_server timeIntervalSince1970]], @"productionschedule_lastmod_server", nil];
//NSLog(@"dict: %@", dict);
[retVal addObject:dict];
}
return retVal;
И код, который вызывает этот метод:
NSArray *arr2 = [self retrieveJobs];
(вот и все; я даже не использую переменную)
РЕДАКТИРОВАТЬ 2:
Даже просто перебирая полученный результат с пустым циклом for и ничего не делая с объектом fetchResults
, происходит сбой приложения. Как это вообще возможно?