я впервые спрашиваю здесь что-то, так что не будьте слишком резкими со мной, пожалуйста :-). У меня странная проблема "плохого доступа". В моем классе у меня есть NSInteger
вместе с несколькими другими членами. Я переопределяю метод - (NSString *)description
, чтобы напечатать значения всего, что есть (пропущена несущественная часть):
- (NSString *)description {
return [NSString stringWithFormat:@"Duration:%d", duration];
}
и затем я печатаю это, используя NSLog(@"%@", myObject)
, что дает мне EXC_BAD_ACCESS без каких-либо сообщений журнала, независимо от NSZombieEnabled.
- Я дважды проверил порядок всех спецификаторов форматирования и
параметры - это правильно.
- Я попытался изменить спецификатор формата на
%i
и %@
и не получил никакого результата
- Когда я инициализирую свой объект, я не инициализирую
продолжительность. Позже я назначаю его через свойство
@property NSInteger
duration
. Поэтому я попытался инициализировать длительность до 0 в моем init
метод, но безрезультатно.
- Если я укажу продолжительность NSNumber до
печать, это работает.
- Когда я удаляю продолжительность и оставляю все
другие ивары это работает снова.
Я в тупике, что я здесь не так делаю?
Вы можете мне помочь?
Большое спасибо!
РЕДАКТИРОВАТЬ: Подводя итог, кажется, это вызвано различиями между 32 и 64-битными платформами, потому что это нормально при запуске на iphone 4 и имеет проблемы только при запуске в симуляторе. Я попробовал 3 различных подхода - используя %d
и %i
с самой переменной NSInteger, используя %qi
и используя %ld
/ %lx
, и я также пытался привести к int
и long
с различными спецификаторы формата. Каждый раз, когда я могу запустить на устройстве, но получить EXC_BAD_ACCESS в симуляторе.