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:]
このクラッシュを引き起こしているだろうか上の任意のポインタのように見えるものであるiOSの11で起こりますか? ありがとうございます
「限界を超えたインデックス9223372036854775807」は私には明らかです。ピッカーのデータにどのようにアクセスしようとしますか? – LinusGeffarth
'changeDateInLabel:'の実装は何ですか? Linusが言ったように、エラーはかなり自明です。 –
正直なところ、これは、上記のコードの2行目でクラッシュが発生している(スタックトレースが示唆しているが、デバッガを使用して確認できるか、 ' - setDatePickerMode: '行とそのログがクラッシュ前に発生しているかどうかを確認する)。あなたがそれにモードを設定しただけで、まったく新しい日付ピッカーがクラッシュしてはいけません。それで、多分あなたが '-setDatePickerMode:'を呼び出すように行の順序を並べ替えるならば、それ以外のものをすべて設定した後、それを回避できますか? –