2012-03-29 5 views
4

Ich arbeite an einer App, die AVfoundation ausgiebig nutzt. Kürzlich habe ich einige Lecks mit Instrumenten überprüft. Das „Lecks“ Instrument wurde ein Leck an einem Punkt a in dem Code berichten, wo ich eine neue AVPlayer, wie diese Instanziierung:Gibt es ein Leck in der AVPlayers Init-Methode?

player1 = [AVPlayer playerWithPlayerItem:playerItem1]; 

das Problem zu reduzieren, habe ich ein völlig neues Xcode-Projekt mit einem einzigen Anwendung anzeigen, ARC verwenden und folgende Zeile einfügen.

AVPlayer *player = [[AVPlayer alloc] init]; 

Dies erzeugt den gleichen Leckbericht in Instruments. Unten ist die Stapelverfolgung. Weiß jemand, warum ein einfacher Aufruf von [[AVPlayer alloc] init] ein Leck verursachen würde? Obwohl ich ARC verwende, habe ich versucht, es auszuschalten und den entsprechenden [Player release] einzufügen; Anweisung und es macht keinen Unterschied. Dies scheint speziell mit AVPlayer zu tun zu haben.

0 libsystem_c.dylib malloc 
1 libsystem_c.dylib strdup 
2 libnotify.dylib token_table_add 
3 libnotify.dylib notify_register_check 
4 AVFoundation -[AVPlayer(AVPlayerMultitaskSupport) _iapdExtendedModeIsActive] 
5 AVFoundation -[AVPlayer init] 
6 TestApp -[ViewController viewDidLoad] /Users/jason/Synaptic Revival/Project Field Trip/software development/TestApp/TestApp/ViewController.m:22 
7 UIKit -[UIViewController view] 
--- 2 frames omitted --- 
10 UIKit -[UIWindow makeKeyAndVisible] 
11 TestApp -[AppDelegate application:didFinishLaunchingWithOptions:] /Users/jason/Synaptic Revival/Project Field Trip/software development/TestApp/TestApp/AppDelegate.m:24 
12 UIKit -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] 
--- 3 frames omitted --- 
16 UIKit _UIApplicationHandleEvent 
17 GraphicsServices PurpleEventCallback 
18 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ 
--- 3 frames omitted --- 
22 CoreFoundation CFRunLoopRunInMode 
23 UIKit -[UIApplication _run] 
24 UIKit UIApplicationMain 
25 TestApp main /Users/jason/software development/TestApp/TestApp/main.m:16 
26 TestApp start 
+0

Ich sehe das gleiche Leck überall und ich benutze AVFoundation nicht. –

+0

Ich sehe das gleiche Verhalten bei der Installation eines AVPlayers mit einem AVPlayerItem, das von einem AVURLAsset abgerufen wurde. Wenn man bedenkt, dass der Spieler ein globales ist ... was wirklich nervt. – GnarlyDog

Antwort

3

Diese 48-Bytes Leck wird von Apple als bekanntes Problem bestätigt, die nicht nur in AVPlayer lebt, sondern auch in UIScrollView (ich habe eine App passiert beide Komponenten zu verwenden.)

sehen Sie bitte dieses fädeln Detail zu bekommen: Memory leak every time UIScrollView is released

Hier ist der Link zu Antwort Apfel auf der thead (Sie können einen Entwickler-ID müssen sich anmelden): https://devforums.apple.com/thread/144449?start=0&tstart=0

A pple's kurzes Zitat:

Dies ist ein bekannter Fehler, der in einer zukünftigen Version behoben wird. In der Zwischenzeit, während alle Lecks offensichtlich unerwünscht sind, wird dies keine sichtbaren Probleme in der realen Welt verursachen. Ein Benutzer müsste ungefähr 22.000 Mal scrollen, um 1 Megabyte Speicher zu verlieren, was sich nicht auf die tägliche Nutzung auswirkt.

Es scheint, dass jede Komponente, die auf notify_register_check und notify_register_mach_port verweist, dieses Problem verursacht.

Momentan kann kein offensichtlicher Spaziergang gefunden oder behoben werden. Es wird bestätigt, dass dieses Problem in iOS-Versionen für 5.1 und 5.1.1 bleibt. Hoffentlich kann Apple das in iOS 6 beheben, weil es wirklich nervig und destruktiv ist.

+0

Können Sie auf eine Quelle für "von Apple bestätigt" klicken? –