почему в коде SimpleEKDemo есть утечка памяти? - PullRequest
0 голосов
/ 30 мая 2011

При профилировании приложения SimpleEKDemo от Apple я отмечаю, что есть некоторые утечки памяти.

Одной из утечек является __NSArrayM, в истории которого есть 3 строки, Malloc / Assign / Release.

Вопрос - кто-то может указать здесь на причину проблемы? (Я пытаюсь узнать, как получить вывод Instruments о том, где был создан негерметичный объект, а затем оттуда выяснить причину, так что это было бы очень полезно)

1 Ответ

3 голосов
/ 30 мая 2011

Вы заметите, что при запуске демонстрации с утечками в viewDidLoad (ответственный кадр) есть утечка. Если вы переключитесь на Call Tree detail и если вы включите Invert Call Tree, вы увидите утечку, связанную с вызовом +[NSArray new]. Если вы откроете это немного, вы увидите initWithArray, который вызывается в RootViewController viewDidLoad. Проблема в том, что

self.eventsList = [[NSMutableArray alloc] initWithArray:0];

eventsList является retain ed свойством, поэтому созданный объект имеет счет сохранения 2. Однако это только release d один раз либо через release в dealloc, либо путем переназначения eventsList , Вы должны будете автоматически выпустить этот объект.

self.eventsList = [[[NSMutableArray alloc] initWithArray:0] autorelease];

После исправления ошибок не должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...