iOS 8 Nur Speicherleck mit UIAlertController oder UIActionSheet

9

Ich sehe einen Speicherverlust in iOS 8 im Simulator, wenn ich Folgendes mit UIActionSheet oder UIAlertController mache. UIActionSheet verwendet UIAlertController in IOS 8, damit die Probleme zusammenhängen.

showCameraAction wird aufgerufen, wenn eine Schaltfläche gedrückt wird. Ich habe den gesamten Inhalt von der Delegate-Methode entfernt und erhalte immer noch das Leck in dem unten gezeigten Fall. Verwende ich UIActionSheet in irgendeiner Weise, die ich nicht sollte? Ich würde mich über jede Hilfe bei der Lösung dieses Problems freuen. Derselbe Code hat keine Lecks mit IOS 7 (im Simulator).

%Vor%

// leer

%Vor%

Auch versucht mit UIAlertController, mit dem gleichen Ergebnis:

%Vor%

Screenshot mit Ablaufverfolgung: Ссылка

    
Praneeth Wanigasekera 08.10.2014, 00:04
quelle

4 Antworten

5

Ich würde vorschlagen, "UIAlertController" in iOS8 zu verwenden.     Und verwerfen Sie das alertController-Objekt vom angezeigten Controller.     während jedes Ereignis durch den "UIAlertAction" -Block ausgelöst wird.

%Vor%     
pabitranjan 13.07.2015 12:22
quelle
4

Dies ist ein iOS Bug.

Siehe Apple Bug Reporter Problem 21005708 , Speicherleck in UIAlertController unter ARC.

    
SwiftArchitect 18.05.2015 21:15
quelle
1

Dies ist keine Antwort, aber mehr Beweise für das Leck, das einen Kommentar übersteigt. Möge es helfen, eine Lösung oder einen Workaround zu finden. Das Leck scheint gerätespezifisch auf iPad 3 / Retina zu sein!

Ich habe selbst einige Tests durchgeführt, indem ich den View-Controller zurückhalte und loslasse, um das Leck in iOS 8.x anzuzeigen.

Siehe auch: Ссылка

  • LEAKY Geräte: iPad 3 (A1416), iPad Air Simulator
  • Gute Geräte: iPhone 6 iOS 8.1.3, iPhone 4s mit iOS 8.1.2

AGC ist der View-Controller. Die korrekte Retain-Anzahl sollte 2 sein.

iPad Retina Simulator iOS 8.1 UND echtes iPad LEAK // second run ... this time with LEAK by selecting an option 12:56:50.929 SimplySolitaire[27643:473670] >>> WILL actionSheet showInView: retain = 2 12:56:50.930 SimplySolitaire[27643:473670] AGC retain == 3 12:56:50.950 SimplySolitaire[27643:473670] AGC retain == 4 12:56:50.951 SimplySolitaire[27643:473670] AGC retain == 5 12:56:50.951 SimplySolitaire[27643:473670] AGC retain == 6 12:56:50.951 SimplySolitaire[27643:473670] <<< DID actionSheet showInView: retain = 6 12:56:50.998 SimplySolitaire[27643:473670] AGC release = 5 12:56:51.042 SimplySolitaire[27643:473670] AGC release = 4 12:56:51.042 SimplySolitaire[27643:473670] AGC release = 3 // USER dismisses the action sheet with tapping a button (delegate is nil) 12:56:53.257 SimplySolitaire[27643:473670] AGC retain == 4 12:56:53.257 SimplySolitaire[27643:473670] AGC retain == 5 12:56:53.258 SimplySolitaire[27643:473670] AGC retain == 6 12:56:53.258 SimplySolitaire[27643:473670] AGC retain == 7 12:56:53.258 SimplySolitaire[27643:473670] AGC release = 6 12:56:53.259 SimplySolitaire[27643:473670] AGC release = 5 12:56:53.612 SimplySolitaire[27643:473670] AGC release = 4 12:56:53.612 SimplySolitaire[27643:473670] AGC release = 3 // <<<<<<<<<< LEAK should be 2 // the last release is missing, but only iOS system code has executed.

iPad Retina Simulator iOS 8.1 UND echtes iPad, entlassen ohne LEAK 12:54:54.757 SimplySolitaire[27643:473670] >>> WILL actionSheet showInView: retain = 2 12:54:54.758 SimplySolitaire[27643:473670] AGC retain == 3 12:54:54.798 SimplySolitaire[27643:473670] AGC retain == 4 12:54:54.798 SimplySolitaire[27643:473670] AGC retain == 5 12:54:54.798 SimplySolitaire[27643:473670] AGC retain == 6 12:54:54.798 SimplySolitaire[27643:473670] <<< DID actionSheet showInView: retain = 6 12:54:54.845 SimplySolitaire[27643:473670] AGC release = 5 12:54:54.891 SimplySolitaire[27643:473670] AGC release = 4 12:54:54.891 SimplySolitaire[27643:473670] AGC release = 3 // NOW ... dismiss the action sheet without selection (delegate is nil) 12:55:05.643 SimplySolitaire[27643:473670] AGC retain == 4 12:55:05.644 SimplySolitaire[27643:473670] AGC retain == 5 12:55:05.644 SimplySolitaire[27643:473670] AGC retain == 6 12:55:05.644 SimplySolitaire[27643:473670] AGC retain == 7 12:55:05.645 SimplySolitaire[27643:473670] AGC release = 6 12:55:05.645 SimplySolitaire[27643:473670] AGC release = 5 12:55:05.996 SimplySolitaire[27643:473670] AGC release = 4 12:55:05.997 SimplySolitaire[27643:473670] AGC release = 3 12:55:05.997 SimplySolitaire[27643:473670] AGC release = 2 // this is a correct retain of 2

    
cat 05.02.2015 12:52
quelle
-1

Ich würde vorschlagen, zu UIAlertController zu wechseln. UIActionSheet ist in iOS 8 veraltet, also könnten Sie versuchen, es zu versuchen und sehen, ob es immer noch das Leck

gibt     
Phillip 08.10.2014 00:24
quelle