0
在一个非常小的数目在我的iPhone应用程序的情况下,我拿到后for循环崩溃下面的代码:内存管理:我在这里做错了什么?
ABAddressBookRef addressBookInit = ABAddressBookCreate();
CFMutableArrayRef abContacts =
(CFMutableArrayRef)ABAddressBookCopyArrayOfAllPeople(addressBookInit); // get array of all contacts
CFArraySortValues (abContacts, CFRangeMake(0, CFArrayGetCount(abContacts)), (CFComparatorFunction)ABPersonComparePeopleByName, (void *)ABPersonGetSortOrdering());
NSArray *copypeople = (NSArray *) abContacts;
NSMutableArray *tempTheadlist = [[NSMutableArray alloc] init];
for (int i=0; i < copypeople.count; i++)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
ABRecordRef record = [copypeople objectAtIndex:i];
if (blah blah)
[tempThreadList addObject: someObject];
[pool release];
}
// POINT OF CRASH AFTER LOOP ENDS
if (tempTheadlist.count > 0)
[NSThread detachNewThreadSelector: @selector(loading_pictures:) toTarget:self withObject:tempTheadlist];
[tempTheadlist release];
[copypeople release];
CFRelease(addressBookInit);
有什么理由应该在这里的任何点死机?
3 - 除非在那里发生“someObject”的创建。 – 2009-12-06 00:42:27
是的,someObject被创建。并且在排序部分没有发生崩溃,但是在for循环之后。而且没有回溯......这是一个实时问题,但它不会导致崩溃,只会为用户挂起。 – 2009-12-06 02:45:01
您应该能够在调试器挂起并进行回溯时进入调试器。但是,它可能是因为(4) - 你可能正在移动AB的奶酪。 – bbum 2009-12-06 03:47:07