Есть ли утечка в методе инициализации AVPlayers? - PullRequest
4 голосов
/ 30 марта 2012

Я работаю над приложением, которое широко использует AVfoundation.Недавно я проверил некоторые утечки с помощью инструментов.Инструмент «утечки» сообщал об утечке в точке кода, где я создавал новый AVPlayer, например:

player1 = [AVPlayer playerWithPlayerItem:playerItem1];

Чтобы уменьшить проблему, я создал совершенно новый проект Xcode содно приложение просмотра, используя ARC, и вставьте следующую строку:

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

Это создает такой же отчет об утечке в приборах.Ниже приведена трассировка стека.Кто-нибудь знает, почему простой вызов [[AVPlayer alloc] init] может вызвать утечку?Хотя я использую ARC, я попытался отключить его и вставить соответствующий [релиз игрока];инструкция и это не имеет значения.Похоже, это связано именно с AVPlayer.

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

1 Ответ

3 голосов
/ 27 июля 2012

Эта утечка в 48 байт подтверждается Apple как известная проблема, которая не только живет в AVPlayer, но и в UIScrollView (у меня есть приложение, в котором используются оба компонента.)

подробнее: Утечка памяти при каждом выпуске UIScrollView

Вот ссылка на ответ Apple на thead (вам может понадобиться идентификатор разработчика для входа): https://devforums.apple.com/thread/144449?start=0&tstart=0

Краткая цитата Apple:

Это известная ошибка, которая будет исправлена ​​в следующем выпуске.Между тем, хотя все утечки явно нежелательны, это не вызовет каких-либо видимых для пользователя проблем в реальном мире.Пользователь должен будет прокрутить примерно 22 000 раз, чтобы утечь 1 мегабайт памяти, поэтому это не повлияет на ежедневное использование.

Кажется, что любой компонент, который ссылается на notify_register_check и notify_register_mach_port, вызовет эту проблему,

В настоящее время не найдено ни одного очевидного обхода или исправления.Подтверждено, что эта проблема остается в версиях iOS для 5.1 и 5.1.1.Надеюсь, Apple сможет это исправить в iOS 6, потому что это действительно раздражает и разрушительно.

...