Метод подсчета NSMutableArray вызывает ошибку неверного доступа? - PullRequest
3 голосов
/ 19 июня 2011

Я вижу несколько похожих вопросов, но простых ответов нет.Я просто играю с NSMutableArray, чтобы почувствовать их, прежде чем я на самом деле использую их в своем реальном проекте.По какой-то причине это выдает мне ошибку EXC_BAD_ACCESS, когда я пытаюсь вызвать счетчик в массиве, и я не могу понять, почему.,Я не понимаю, почему это не работает, и буду очень признателен за помощь.Спасибо!

Ответы [ 4 ]

8 голосов
/ 19 июня 2011

Спецификатор формата %@ печатает объекты.Возвращаемое значение -count - это просто целое число без знака.Для этого типа вы должны использовать спецификатор формата %u.

2 голосов
/ 19 июня 2011

Проблема в том, что [test count] возвращает NSUInteger, а не указатель (на NSObject).Попробуйте вместо этого:

NSLog(@"%u", [test count]);

Обратите внимание, что использование %d также работает, но предпочтительным является %u.

1 голос
/ 19 июня 2011

- (NSUInteger)count; возвращает NSUInteger.

Используйте это вместо:

NSLog(@"%u", [test count]); //bad access here
0 голосов
/ 19 июня 2011

count работает просто отлично.Однако он возвращает примитив NSUInteger, а не указатель на подкласс NSObject.Форматировщик строки %@ ожидает указание на объект и регистрирует NSString, возвращенный методом -description этого объекта.Когда вы передаете его, NSUInteger NSLog предполагает, что он является указателем объекта, и старательно пытается отправить сообщение -description на адрес памяти 3, что вызывает EXEC_BAD_ACCESS.

...