Получение EXC_BAD_ACCESS при попытке добавить объект к NSMutableArray - PullRequest
0 голосов
/ 29 августа 2010

У меня есть следующий код:

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]?

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

Ответы [ 2 ]

1 голос
/ 29 августа 2010
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 голосов
/ 29 августа 2010

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

В X-Code выберите «Выполнить»> «Выполнить с помощью инструмента повышения производительности»> «Утечки»

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...