Образец iOS PhotoPicker аварийно завершает работу в симуляторе 4.0

Я попытался запустить пример PhotoPicker от Apple, и он вылетает под симулятором 4.0. Хотя под 4.3 не вылетает. У кого-нибудь есть эта проблема? Изменилось ли что-то между версиями SDK, что могло вызвать проблему с нулевым объектом?

Он умирает в этой строке:

// as a delegate we are being told a picture was taken
- (void)didTakePicture:(UIImage *)picture
{
    [self.capturedImages addObject:picture];
}

Вот вывод ошибки:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 79426.
2011-07-06 15:04:53.265 PhotoPicker[79426:207] Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations.
2011-07-06 15:04:53.268 PhotoPicker[79426:207] Using two-stage rotation animation is not supported when rotating more than one view controller or view controllers not the window delegate
2011-07-06 15:04:56.432 PhotoPicker[79426:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x0255a919 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x026a85de objc_exception_throw + 47
    2   CoreFoundation                      0x02554571 -[__NSArrayM insertObject:atIndex:] + 225
    3   CoreFoundation                      0x0254f9c4 -[__NSArrayM addObject:] + 68
    4   PhotoPicker                         0x00002d93 -[MyViewController didTakePicture:] + 65
    5   PhotoPicker                         0x00004442 -[OverlayViewController imagePickerController:didFinishPickingMediaWithInfo:] + 132
    6   UIKit                               0x00481a74 -[UIImagePickerController _imagePickerDidCompleteWithInfo:] + 139
    7   PhotoLibrary                        0x0c3c3070 PLNotifyImagePickerOfImageAvailability + 1746
    8   PhotoLibrary                        0x0c3d8891 -[PLUIAlbumViewController albumView:didTapPhotoAtIndex:] + 429
    9   PhotoLibrary                        0x0c426431 -[PLAlbumView _tapGesture:] + 385
    10  UIKit                               0x0052b394 -[UIGestureRecognizer _updateGestureWithEvent:] + 727
    11  UIKit                               0x00527bf3 -[UIGestureRecognizer _delayedUpdateGesture] + 47
    12  UIKit                               0x0052c486 _UIGestureRecognizerUpdateObserver + 637
    13  UIKit                               0x0052d798 _UIGestureRecognizerUpdateGesturesFromSendEvent + 51
    14  UIKit                               0x002dbbcd -[UIWindow _sendGesturesForEvent:] + 1292
    15  UIKit                               0x002d713a -[UIWindow sendEvent:] + 105
    16  UIKit                               0x002bb1ec -[UIApplication sendEvent:] + 447
    17  UIKit                               0x002bfac4 _UIApplicationHandleEvent + 7495
    18  GraphicsServices                    0x02dc0afa PurpleEventCallback + 1578
    19  CoreFoundation                      0x0253bdc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    20  CoreFoundation                      0x0249c737 __CFRunLoopDoSource1 + 215
    21  CoreFoundation                      0x024999c3 __CFRunLoopRun + 979
    22  CoreFoundation                      0x02499280 CFRunLoopRunSpecific + 208
    23  CoreFoundation                      0x024991a1 CFRunLoopRunInMode + 97
    24  GraphicsServices                    0x02dbf2c8 GSEventRunModal + 217
    25  GraphicsServices                    0x02dbf38d GSEventRun + 115
    26  UIKit                               0x002c3b58 UIApplicationMain + 1160
    27  PhotoPicker                         0x000031f8 main + 102
    28  PhotoPicker                         0x000027bd start + 53
    29  ???                                 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
sharedlibrary apply-load-rules all
Current language:  auto; currently objective-c
(gdb) 

person gonzobrains    schedule 06.07.2011    source источник
comment
У меня работает нормально. Вы не вносили никаких изменений?   -  person zpasternack    schedule 06.07.2011
comment
Я не делал никаких изменений. Вот что в этом такого странного. Я распаковал его и запустил.   -  person gonzobrains    schedule 06.07.2011


Ответы (2)


У меня была странная проблема, когда симулятор/устройство на iOS 4.3 случайно давал сбой при выборе изображений из библиотеки фотографий, обычно с методом PLAlbumView или PLUIAlbumViewController в качестве последней строки в трассировке стека.

Я отключал модальный контроллер просмотра фотографий и сразу же представлял другой модальный контроллер просмотра - таким образом, анимация была ненужной. Сбой не происходил на iOS 5.

Я думал, что это может быть состояние гонки, согласно вопросу контроллер модального представления сразу после закрытия другого

Оказывается, когда я изменил отклонение VC от

[myPhotoLibrary dismissModalViewControllerAnimated:YES];

to

[myPhotoLibrary dismissModalViewControllerAnimated:NO];

авария ушла. Кажется, это ошибка в фреймворке.

person Ryan    schedule 08.03.2012

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'

Вы пытаетесь вставить nil в массив. Это вы делаете это в [MyViewController didTakePicture:]

Поэтому, прежде чем добавлять объект в массив, сначала проверьте, равен ли он нулю.

person Alex Terente    schedule 06.07.2011
comment
Ну, я подумал, что код (от Apple, а не я) делает что-то подобное, но странно, что он работает под симулятором 4.3. И zpastermack сообщил, что у него это работает. :/ - person gonzobrains; 06.07.2011