2
다음 코드는 내 UIView 중 하나에 DatePicker를 추가하는 코드입니다.UIDatePicker NSRangeException 충돌 iOS 11
UIDatePicker *datePicker =
[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 30, 320, 250)];
[datePicker setDatePickerMode:UIDatePickerModeDate];
datePicker.hidden = NO;
datePicker.date = [NSDate date];
[datePicker addTarget:self
action:@selector(changeDateInLabel:)
forControlEvents:UIControlEventValueChanged];
[self.dateView addSubview:datePicker];
이 코드는 잠시 동안 사용되었지만 일부 충돌이 발생했습니다. 충돌 만이이 충돌 스택 추적이
Fatal Exception: NSRangeException
*** -[__NSArrayM objectAtIndex:]: index 9223372036854775807 beyond bounds [0 .. 1]
Fatal Exception: NSRangeException
0 CoreFoundation 0x180d87d38 __exceptionPreprocess
1 libobjc.A.dylib 0x18029c528 objc_exception_throw
2 CoreFoundation 0x180d20c44 _CFArgv
3 CoreFoundation 0x180c50cc0 -[__NSArrayM removeObjectAtIndex:]
4 UIKit 0x18a3ecaa8 -[UIPickerView selectedRowInComponent:]
5 UIKit 0x18ac52224 -[_UIDatePickerMode_Date _dateForYearRow:]
6 UIKit 0x18ac4edd8 -[_UIDatePickerMode dateForRow:inCalendarUnit:]
7 UIKit 0x18ac4fa70 -[_UIDatePickerMode _updateSelectedDateComponentsWithNewValueInComponent:usingSelectionBarValue:]
8 UIKit 0x18ac4fd18 -[_UIDatePickerMode selectedDateComponents]
9 UIKit 0x18ac43370 -[_UIDatePickerView _updatedLastSelectedComponentsByValidatingSelectedDateWithLastManipulatedComponent:]
10 UIKit 0x18ac427e8 -[_UIDatePickerView _setDate:animated:forced:]
11 UIKit 0x18ac42d24 -[_UIDatePickerView _setMode:]
12 UIKit 0x18ac42e40 -[_UIDatePickerView setDatePickerMode:]
이 충돌의 원인이 될 것입니다 무슨에 모든 포인터 모습입니다 아이폰 OS 11에 일이? 감사합니다.
'경계를 넘은 인덱스 9223372036854775807'은 제게는 분명합니다. 피커 데이터에 어떻게 액세스하려고합니까? – LinusGeffarth
'changeDateInLabel :'의 구현은 무엇입니까? 리누스 (Linus)가 말했듯이, 오류는 꽤 자명하다. –
솔직히 말해서 위의 코드의 두 번째 줄에서 충돌이 발생하는 경우 (스택 추적에서 알 수 있듯이 디버거를 사용하거나 로그를 ' setDatePickerMode :'라인과 그 로그가 충돌 전에 발생하는지보기). 새로운 날짜 선택 도구는 모드를 설정했기 때문에 충돌하지 않아야합니다. 그렇게 말하면, 다른 것들을 모두 설정 한 후에'-setDatePickerMode :'를 호출하도록 줄의 순서를 바꾸면, 그 줄을 해결할 수있을 것입니다. –