8.1 시뮬레이터에서 실행할 때 문자열의 길이를 비교하여 응용 프로그램이 충돌한다는 iPad 응용 프로그램 (XCode 6.1.1, iOS 8.1, ARC)이 있습니다. 이것은 1 년 넘게 실행되어 어제 중지되었습니다.NSString.length가 충돌을 일으킴 (NSInvalidArgumentException)
@synthesize shopOpenHour;
@synthesize shopCloseHour;
과 :
if(shopOpenHour.length == 0 || shopCloseHour.length == 0) {
이가하는 .m 파일의 코드가
@property NSString *shopOpenHour;
@property NSString *shopCloseHour;
입니다 : 이것은 .H 파일의 코드가
입니다 :이 코드입니다
그리고 이로 인해 충돌이 발생합니다.
이내가지고있어 오류입니다 :
인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는*** : - :
'[__ NSCFNumber 길이] 알 수없는 선택 예를 0xb000000000003203로 전송'
iOS 8.1을 실행하는 7.1 시뮬레이터 및 iPad에서 실행하면 정상적으로 실행됩니다. 나는 NSCFNumber가 "그림 속에"있는 곳/이유를 이해하지 못합니다.
내 질문은 : (나는 레이더를 제출하기 전에?)이 원인을 무엇의 어떤 아이디어
이런 소리는 재연 될 수 있습니다. NSString이 아니라면 스택 추적/중단 점을 덤프하는 인수의 유형을 확인하는 자체 setter를 정의하지 않는 이유는 무엇입니까? – CRD
'shopCloseHour'라는 또 다른 필드를 정의했을 수도 있습니다? 'shopCloseHour'를'if'와'NSLog' 문에서'_shopCloseHour'로 바꾸고 다시 시도하십시오. –