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