NSSет бесполезно после подсчета? - PullRequest
0 голосов
/ 02 июля 2011

Почему я не могу сделать

NSLog(@"mySet count: %@", [mySet count]);

и потом использовать NSSet? (если я его использую, приложение вылетает с "EXC_BAD_ACCESS"

Я пробовал изменяемые / неизменяемые, сохраняемые, копируемые, автоматически выпускаемые ... все виды наборов, и после сообщения о подсчете все они становятся бесполезными и вылетают. И если я не считаю, они ведут себя, как ожидалось, И если я распечатываю их так:

NSLog(@"mySet: %@", mySet);

все хорошо! Кажется, проблема только в подсчете.

Может кто-нибудь объяснить мне это? Я искал и ничего не нашел относительно этого странного поведения

1 Ответ

3 голосов
/ 02 июля 2011

Причина этого сбоя в том, что [mySet count] возвращает целое число, а спецификатор формата %@ ожидает объект. Измените его на:

NSLog(@"mySet count: %lu", [mySet count]);

Это один из "уловок" Objective C (если вы уже не знакомы с C или C ++): иногда ваши данные являются объектом, а иногда ваши данные не являются объектом. Это необходимо для совместимости с кодом C.

...