2017-06-26 3 views
0

Ich bekomme ein seltsames Problem beim Fotografieren mit Swift 3 auf einem iPhone 6s. Ich versuche mehrere Fotos nacheinander aufzunehmen und irgendwann stürzt die App ab.iOS Swift UND Xamarin App Absturz mit UIImagePickerController/ImagePicker

mit dem folgenden Code:

import UIKit 

class WelcomeViewController : UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate 
{ 
    var imagePicker: UIImagePickerController! 
    var photoCount : Int = 0 
    @IBOutlet weak var photoCountLabel: UILabel! 
    @IBOutlet weak var memoryUseageLabel: UILabel! 

    @IBAction func TakePhotoAction(_ sender: Any) { 
     if (imagePicker == nil) 
     { 
      imagePicker = UIImagePickerController() 
      imagePicker.delegate = self 
      imagePicker.sourceType = .camera 
     } 

     present(imagePicker, animated: true, completion: nil) 
    } 

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     imagePicker.dismiss(animated: true, completion: nil) 
     photoCount = photoCount + 1; 

     photoCountLabel.text = String(photoCount) 
    } 

    override func viewDidLoad(){ 
     super.viewDidLoad() 
     photoCount = 0; 

    } 
} 

Ich erhalte einen App Absturz und Xcode sagt, dass es mit dem Gerät „Verbindung verloren“ hat. Also deutet alles auf ein Speicherleck hin, und laufende Instrumente legen nahe, dass es auch darauf hindeutet, dass es immer wieder neue Threads gibt, die nie enden.

Problem ist, verwende ich sehr grundlegenden Code, die Auswahl wiederverwenden, die Sicht ablehnen und dies ist die einzige Ansicht in der gesamten App.

Um die Dinge noch seltsamer zu machen, die Ausnahme überhaupt nicht auftritt, wenn ich 7 auf iOS mein iPhone verwenden 10.3.1 oder auf einer anderen iPhone 6 mit iOS 10.3.2

(nicht +) So

Ich habe die 6+ auf 10.3.1 heruntergestuft und wieder die Ausnahme bekommen. Ich habe sogar iOS 11 Beta eingesetzt und die Ausnahme ist immer noch aufgetreten.

Ich hoffe, dass jemand mir wenigstens eine Erklärung geben kann, was los ist oder warum.

UPDATE

Ich war dies auf einem Xamarin erleben Forms PCL Projekt und beschlossen, sie alle aus und schreiben Sie eine Swift-Version strippen, um zu sehen, ob das Problem noch oder nicht aufgetreten. Stellt sich heraus, es tat. Wie auch immer, beim Testen der Xamarin App haben wir eine Ausnahme bekommen.

Die Ausnahme wurde in eine Protokolldatei geschrieben. Dies ist der Inhalt:

Error Occurred: 
Objective-C exception thrown. Name: NSInvalidArgumentException Reason: *** setObjectForKey: object cannot be nil (key:   UIImagePickerControllerOriginalImage) 
Native stack trace: 
0 CoreFoundation      0x000000018a93eff8 <redacted> + 148 
1 libobjc.A.dylib      0x00000001893a0538 objc_exception_throw + 56 
2 CoreFoundation      0x000000018a822528 <redacted> + 0 
3 PhotoLibrary      0x0000000197b18980 <redacted> + 756 
4 PhotoLibrary      0x0000000197b1864c PLNotifyImagePickerOfImageAvailability + 28 
5 CameraUI       0x00000001a08e990c <redacted> + 456 
6 CameraUI       0x00000001a08e9218 <redacted> + 548 
7 UIKit        0x0000000190aa5010 <redacted> + 96 
8 UIKit        0x0000000190aa4f90 <redacted> + 80 
9 UIKit        0x0000000190a8f504 <redacted> + 440 
10 UIKit        0x0000000190aa4874 <redacted> + 576 
11 UIKit        0x0000000190aa4390 <redacted> + 2480 
12 UIKit        0x0000000190a9f728 <redacted> + 3192 
13 UIKit        0x0000000190a7033c <redacted> + 340 
14 UIKit        0x000000019126a014 <redacted> + 2400 
15 UIKit        0x0000000191264770 <redacted> + 4268 
16 UIKit        0x0000000191264a50 <redacted> + 5004 
17 UIKit        0x0000000191264a50 <redacted> + 5004 
18 UIKit        0x0000000191264b9c <redacted> + 148 
19 CoreFoundation      0x000000018a8ed42c <redacted> + 24 
20 CoreFoundation      0x000000018a8ecd04 <redacted> + 388 
21 CoreFoundation      0x000000018a8ea9a8 <redacted> + 744 
22 CoreFoundation      0x000000018a81ada4 CFRunLoopRunSpecific + 424 
23 GraphicsServices     0x000000018c284074 GSEventRunModal + 100 
24 UIKit        0x0000000190ad5058 UIApplicationMain + 208 
25 MyApp_iOS_beta      0x0000000100bcb634 wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 340 
26 MyApp_iOS_beta      0x000000010050c59c UIKit_UIApplication_Main_string___intptr_intptr + 44 
27 MyApp_iOS_beta      0x000000010050c45c UIKit_UIApplication_Main_string___string_string + 172 
28 MyApp_iOS_beta      0x0000000100078164 MyApp_iOS_Application_Main_string__ + 212 
29 MyApp_iOS_beta      0x00000001011f29f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 244 
30 MyApp_iOS_beta      0x00000001038e504c mono_jit_runtime_invoke + 836 
31 MyApp_iOS_beta      0x000000010394f6b4 do_runtime_invoke + 112 
32 MyApp_iOS_beta      0x00000001039522dc do_exec_main_checked + 152 
33 MyApp_iOS_beta      0x00000001038cea44 mono_jit_exec + 268 
34 MyApp_iOS_beta      0x0000000103a02f70 xamarin_main + 2148 
35 MyApp_iOS_beta      0x00000001038a5e84 main + 96 
36 libdyld.dylib      0x000000018982959c <redacted> + 4 

Stack Trace: 
    at ObjCRuntime.Runtime.ThrowNSException (System.IntPtr ns_exception) [0x00000] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/src/ObjCRuntime/Runtime.cs:319 
    at ObjCRuntime.Runtime.throw_ns_exception (System.IntPtr exc) [0x00000] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/runtime/Delegates.generated.cs:126 
    at (wrapper native-to-managed) ObjCRuntime.Runtime:throw_ns_exception (intptr) 
--- End of stack trace from previous location where exception was thrown --- 
    at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) 
    at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/src/UIKit/UIApplication.cs:79 
    at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/src/UIKit/UIApplication.cs:63 
    at MyApp.iOS.Application.Main (System.String[] args) [0x00009] in /Users/MyApp/iOS/Main.cs:16 
+0

Erstellen Sie ein Beispiel-App mit nur Bild-Picker-Code ohne irgendetwas anderem, hat dort einen Blick auf Speicherproblem. Wenn die Beispielanwendung gut funktioniert, liegt die Ursache des Problems in der Nähe des von Ihnen bereitgestellten Codes. – DisableR

+0

Das ist genau das, was ich getan habe ... das ist buchstäblich der einzige View/Controller in der App – doiley

+0

Sie präsentieren den gleichen Bilderwähler Controller mehrmals, das könnte das Problem sein, da die Bilderauswahl in einem ungültigen Zustand sein kann wurde einmal benutzt. – DisableR

Antwort