Пример iOS PhotoPicker вылетает под симулятор 4.0 - PullRequest
0 голосов
/ 06 июля 2011

Я попытался запустить пример 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) 

Ответы [ 2 ]

1 голос
/ 08 марта 2012

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

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

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

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

[myPhotoLibrary dismissModalViewControllerAnimated:YES];

на

[myPhotoLibrary dismissModalViewControllerAnimated:NO];

авария прошла.Кажется, это ошибка в рамках.

0 голосов
/ 06 июля 2011
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'

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

Итак, прежде чем добавить объект в тест массива, если он равен nil.

...