Утечка памяти UIActivityViewController

Я представляю UIActivityViewController, используя следующий код (используя ARC):

- (IBAction)share:(id)sender {
UIActivityViewController *activityController = [[UIActivityViewController alloc]
                                                initWithActivityItems:[NSArray arrayWithObjects:@"Cat",@"Dog" , nil]
                                                applicationActivities:nil];

[self presentViewController:activityController  animated:YES completion:nil];}

Запуск программы на симуляторе iphone с инструментами "Утечки". После представления представления и нажатия кнопки «Отмена»: Получение утечки в следующей строке (100%):

    [self presentViewController:activityController  animated:YES completion:nil];

Что я делаю не так?


person Matthias    schedule 24.12.2012    source источник
comment
Убедитесь, что утечка происходит и на iPhone/iPad. Я сталкивался с несколькими случаями, когда в симуляторе сообщалось об утечках, которые просто исчезали при запуске на устройстве. Во-вторых, проблема может заключаться в том, что когда вы отклоняете контроллер активности, вы делаете это неправильно, поэтому проверьте, как вы удаляете контроллер активности после отмены.   -  person Nuoji    schedule 01.04.2013


Ответы (1)


alloc автоматически уравновешивается ARC. Но передача activityController самому себе увеличивает счетчик ссылок и помещает объект в autorelease pool, если он существует. Таким образом, если ваш код выполняется в потоке, в котором нет autorelease pool, этот объект будет просачиваться.

person Reinhard Männer    schedule 22.01.2013
comment
Код выполняется в основном потоке, который по умолчанию запускается в пуле автоматического выпуска, созданном в main.m. Я создал приложение ios arc на основе одного представления, используя xcode, и все, что я добавил, — это кнопка для запуска вышеуказанного действия общего доступа. Утечка все равно происходит. - person Matthias; 24.01.2013
comment
Ты прав. Утекший объект — это OS_dispatch_queue. Я думаю, вы должны сообщить об этом в Apple. - person Reinhard Männer; 29.01.2013