2015-04-24 26 views
11

Uygulamalarımın çeşitli sürümlerinde bir çökme yaşıyorum ve iOS8'de başlamış gibi görünüyor. Sadece çökme raporları ile deneyimliyorum ve test cihazımda üretemiyorum. Bir kullanıcı bir görüntü yakaladığında (ya da onu kütüphaneden seçer mi?) Ve görüntü nil olduğu için orijinal görüntü ayarlanamadığında görünür. aranırken Bulabileceğim yakın mesele şudur:UIImagePickerControllerOriginalImage nil fotoğraf çekimi üzerine çökmesine neden oluyor

https://github.com/B-Sides/ELCImagePickerController/issues/58

ben de üreyemiyorlardı olduğum belirli bir yarış durumu zamanlaması ile arka plana geçtiğinde başka olasılık.

http://openradar.appspot.com/19953748

ama benim hata bir dere görüntüsünden geliyor sanmıyorum seçilir. Başka birinin bu hatayı alıp almadığını görmeyi umuyorum ve istisnai durumu yakalamak için bir çözüm buldunuz veya bunun ne zaman gerçekleştiğini algılamak veya belirli bir kullanıcı eylemini (fotoğraf yüklerken uygulamayı arka plan gibi) devre dışı bırakmak Bir çarpışma.

önemli özel: NSInvalidArgumentException *** setObjectForKey: Nesne olamaz nil (anahtar: UIImagePickerControllerOriginalImage)

Thread : Fatal Exception: NSInvalidArgumentException 
0 CoreFoundation     0x2b381fef __exceptionPreprocess + 126 
1 libobjc.A.dylib    0x39633c8b objc_exception_throw + 38 
2 CoreFoundation     0x2b29daa3 -[__NSDictionaryM setObject:forKey:] + 850 
3 PhotoLibrary     0x345bf8f3 __CreateInfoForImage 
4 PhotoLibrary     0x345bf1ad PLNotifyImagePickerOfImageAvailability 
5 PhotoLibrary     0x345d384b -[PLUICameraViewController cameraView:photoSaved:] 
6 PhotoLibrary     0x34606a73 -[PLImagePickerCameraView cropOverlay:didFinishSaving:] 
7 PhotoLibrary     0x3460706d -[PLImagePickerCameraView captureController:didCompleteResponse:forStillImageRequest:error:] 
8 CameraKit      0x303392a5 -[CAMCaptureController _completedResponse:forRequest:error:] 
9 CameraKit      0x30338bfb __56-[CAMCaptureController enqueueStillImageCaptureRequest:]_block_invoke_32160 
10 libdispatch.dylib    0x39b9e2e3 _dispatch_call_block_and_release + 10 
11 libdispatch.dylib    0x39b9e2cf _dispatch_client_callout + 22 
12 libdispatch.dylib    0x39ba1d2f _dispatch_main_queue_callback_4CF + 1330 
13 CoreFoundation     0x2b347609 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8 
14 CoreFoundation     0x2b345d09 __CFRunLoopRun + 1512 
15 CoreFoundation     0x2b292201 CFRunLoopRunSpecific + 476 
16 CoreFoundation     0x2b292013 CFRunLoopRunInMode + 106 
17 GraphicsServices    0x32b71201 GSEventRunModal + 136 
18 UIKit       0x2ea36a59 UIApplicationMain + 1440 
19 Pact       0x000b26ab main (main.m:17) 
20 libdyld.dylib     0x39bbfaaf start + 2 

DÜZENLEME 18 Eylül 2017 Bu sorunu uğranılmaz ve ne yazık ki, bir çözelti, bulundu değil: (

temsilci yönteminde sonra
+1

çekmeden önce sadece uygulama durumu için kontrol ederek bunu çözebildiğinden duyuyorum "aranırken bulabilirim yakın mesele budur" diyor. Bir google araması yaptım ve alakalı bir şey yok. Böylece, yığın taşmasıyla ilgili bir soru gönderme. Umarım bir google araması bu soruna yol açacaktır. – mitrenegade

+0

Tamam, google bunu _for_. Örneğin, bunu buldum: http://www.openradar.appspot.com/19953748 Oldukça anlayışlı, bence. – matt

+0

Bağlantı için teşekkürler. Bunu görmeyi hatırlıyorum. Onların da cevapları ya da çözümleri var gibi görünmüyor. Yani, takip etmek için, ve belki de benim sorumumun ödüllendirilmesi gerekiyor - herkes bunun bir çözümü var mı? Arka planda çalışırken bile uygulamamdaki çökmeyi yeniden oluşturamadım. – mitrenegade

cevap

0
If you write tap gesture or action sheet,just check the below code with your code. 

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
    { 
    UIImagePickerController *pickerController = [[UIImagePickerController alloc]init]; 
    pickerController.delegate=self; 
    if(buttonIndex==0) 
    { 
     pickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
     [self presentViewController:pickerController animated:YES completion:nil]; 
    } 
    else if(buttonIndex==1) 
    { 
     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == YES) 
     { 
      NSLog(@"Camera is available and ready"); 
      pickerController.sourceType=UIImagePickerControllerSourceTypeCamera; 
      [self presentViewController:pickerController animated:YES completion:nil]; 
     } 
     else 
     { 
      NSLog(@"Camera is not available"); 
      [[[UIAlertView alloc]initWithTitle:@"Whoa !" message:@"Camera is not available" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]show]; 
     } 
    } 

    } 

,

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    { 

     UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
     imageView.image = image; 
     [picker dismissViewControllerAnimated:YES completion:nil]; 
    } 
+0

Bilgi görüntü ile doldurulurken istisna gerçekleşiyor; yığın izinde, kamera çerçevesi UIImagePickerControllerOriginalImage anahtarının değerini sıfırlamaya çalıştığı için çökme meydana gelir. Seçtiğim bir resmin neden sıfır olabileceğini anlamaya çalışıyorum - tüm kilitlenme raporları bir bellek uyarısı göstermediğinden bir bellek sorunu olduğunu düşünmüyorum. – mitrenegade

+0

@mitrenegade bunun nedenini ve herhangi bir çözümü buldunuz mu? –

+0

Bunu tekrar ziyaret ettim. Hatırladığım son şey, bulut fotoğraflarının yüklenmesi ile ilgili olabilir. matt'in yardımına rağmen ne yazık ki cevap yok (/ s) – mitrenegade

3

Bu çökmeyi, tam olarak http://openradar.appspot.com/19953748 tabanlı senaryodan çoğaltılabiliyordum. Her 2 saniyede bir fotoğraf çeken sonsuz bir döngü kurdum ve uygulamayı arka plan ve ön plan arasında sürekli olarak taşıdım. Aynı yığın iziyle hızlıca çöküyor. Bunun için kök nedeninden emin değilim rağmen ben resmini

//Swift 
if UIApplication.sharedApplication().applicationState == .Active { 
       // Take picture 
} 
+0

FlashMode Açık olarak ayarlanmışsa, bu zamanın neredeyse% 100'ünü çoğaltabileceğimi buldum. Sadece deklanşör düğmesine basın ve sonra telefonu kilitlemek için hızlı bir şekilde güç düğmesine basın. Bunu yaşıyorsanız, lütfen https://bugreport.apple.com adresinden bir Radar dosyası gönderin. İşte benim: https://openradar.appspot.com/28108858 – cduhn

+1

@Kedar Merhaba, ben de aynı sorunu keşfettim. Kodunuzu tam olarak nereye koydunuz? Hala kazayı alıyorum. Ben de denedim: func imagePickerController (_ seçici: UIImagePickerController, didFinishPickingMediaWithInfo bilgi: [String: Any]) { UIApplication.shared.applicationState == .active { izin verilen imageImage = info [UIImagePickerControllerOriginalImage] olarak? UIImage {.. } –

İlgili konular