Утечки памяти в рамках Apple - PullRequest
1 голос
/ 04 октября 2011

Когда я выпускаю свой класс, я получаю утечки с NSStrings.Но у меня есть только 2 NSString в свойствах.Другие строки NSString, которые я использую в своих методах в этом классе, и я освобождаю их перед выходом из метода.

[somestring release],somestring = nil;

Вот снимок экрана

enter image description here

Этомоя проблема?Или эта утечка относится к яблочным каркасам?Я также использую ASIHTTPRequest в моем классе.

РЕДАКТИРОВАТЬ: Я нашел проблему.Я несколько раз использовал NSMutableArray и метод mutableCopy, без автоматического освобождения.

До и с утечками : someMutableArray = [anotherClass.anotherMutableArray mutableCopy];

После,и без утечек : someMutableArray = [[anotherClass.anotherMutableArray mutableCopy] autoreleasing];

Ответы [ 3 ]

3 голосов
/ 04 октября 2011

Каркасы Apple, вероятно, не протекают.

Если вы передадите эту переменную другому объекту и этот другой объект сохранит ее без освобождения, вы увидите утечку. И это будет именно там, где вы разместили строку, а не во втором объекте.

Утечки памяти - вот почему я отказался от ASIHTTPRequest. Я знал достаточно, чтобы понять, что это исходит от ASIHTTPRequest, но не смог выяснить, где.

Вероятно, лучшее, что вы можете сделать в этом случае, это посмотреть историю блоков для одного из пропущенных блоков. Вы увидите различные записи и релизы. Они должны балансировать; Более того, каждый хранитель должен иметь свой релиз. Например, если вы видите сохранение объекта в установщике объектов, вы должны убедиться, что предыдущий объект был освобожден в этом установщике и есть ли освобождение в dealloc. Попытайтесь определить объект самого высокого уровня, который протекает, поскольку другие утечки, вероятно, являются его переменными-членами.

2 голосов
/ 04 октября 2011

В инструментах с левой стороны находится раздел «Дерево вызовов».Когда вы выбираете Скрыть системные библиотеки, то отображаются только ваши вызовы методов.Вы должны попробовать это, чтобы увидеть, имеет ли ваш собственный код какое-либо отношение к утечкам.

0 голосов
/ 04 октября 2011

Вам необходимо освободить переменные в методе dealloc.

...