2010-08-29 3 views
0

У меня есть следующий код:Получение EXC_BAD_ACCESS при попытке AddObject к NSMutableArray

NSInteger phoneCount = ABMultiValueGetCount(phones); 
NSMutableArray *phoneKeys = [[[NSMutableArray alloc] init] autorelease]; 
NSMutableArray *phoneKeyValues = [[[NSMutableArray alloc] init] autorelease]; 

for(CFIndex i=0; i < phoneCount; i++) { 
    //NSString *label = [(NSString *)ABMultiValueCopyLabelAtIndex(phones, i) autorelease]; 
    NSString *phone = [(NSString *)ABMultiValueCopyValueAtIndex(phones, i) autorelease]; 
    NSString *phoneIndex = [[[NSNumber alloc] initWithInt:ABMultiValueGetIdentifierAtIndex (phones, i)] autorelease]; 
    [phoneKeys addObject:phoneIndex]; // it breaks on this line 
} 

NSLog(@"Count: %@ %@", [phoneKeys count], [phoneKeyValues count]); 

Любая идея, почему я хотел бы получить EXC_BAD_ACCESS, когда я пытаюсь сделать [phoneKeys AddObject: phoneIndex]?

Заранее спасибо

+0

Вы пытались удалить строку NSLog? – kennytm

+0

Хм, ты прав. означает ли это, что phoneKeys выпущен слишком рано? – john

+0

Вы имеете в виду, что он работал после удаления NSLog? – kennytm

ответ

1
NSLog(@"Count: %@ %@", [phoneKeys count], [phoneKeyValues count]); 

Метод -count возвращает NSUInteger, который является всего лишь unsigned int. Но %@ может печатать объекты Objective-C, а не unsigned int. Это вызывает исключение.

Для печати unsigned int вам необходимо использовать %u вместо %@.

NSLog(@"Count: %u %u", [phoneKeys count], [phoneKeyValues count]); 
+0

Спасибо !!!! Это поможет – john

0

Всякий раз, когда это случилось со мной, то есть код, где он влезает имеет надлежащее управление памятью, а также в соответствии с принципами управления памятью, но кадры из фильма аварий, это приводит к быть связано с более отпуская somwehere еще , я хотел бы сделать полный обзор кода ищет утечки и я рекомендую вам использовать инструмент утечки:

в X-Code идти Run> Run с инструментом производительности> утечки

Проверить это технический Q & A тоже: http://developer.apple.com/mac/library/qa/qa2004/qa1367.html

Смежные вопросы