У меня есть приложение iPad (XCode 6.1.1, iOS 8.1, ARC), что при запуске его на симуляторе 8.1 приложение вылетает, сравнивая длину строки. Это работает уже более года и вчера остановилось. Это код:NSString.length вызывает сбой (NSInvalidArgumentException)
Это код в файле .h:
@property NSString *shopOpenHour;
@property NSString *shopCloseHour;
Это код в файле .m:
@synthesize shopOpenHour;
@synthesize shopCloseHour;
и:
if(shopOpenHour.length == 0 || shopCloseHour.length == 0) {
, и это также вызывает сбой:
NSLog(@"\n\nlength test: %d", (int)shopCloseHour.length);
Это ошибка, я получаю:
*** Нагрузочного приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [__ длина NSCFNumber]: непризнанный селектор послал к экземпляру 0xb000000000003203'
Он работает нормально при работе под симулятором 7.1 и iPad под управлением iOS 8.1. Я не понимаю, где/почему NSCFNumber «на картинке».
Мой вопрос: какие идеи, что причиной этого (прежде чем я представить RADAR?)
Звучит так, что это воспроизводимо. Почему бы не определить свои собственные сеттеры, которые проверяют тип своего аргумента и выгружают трассировку/точку останова стека, когда это не 'NSString'? – CRD
Возможно, вы определили другое поле под названием 'shopCloseHour'? Замените 'shopCloseHour'' _shopCloseHour' в операторах 'if' и' NSLog' и повторите попытку. –