Невидимые утечки памяти ... iOS 4 - PullRequest
0 голосов
/ 19 октября 2011

Итак, у меня проблема с памятью.Кажется, что я неправильно освобождаю или освобождаю объекты, потому что я получаю тонкое наращивание памяти в моей игре.

Я инициирую все объекты следующим образом:

self = [super init];
if (self != nil) {
    //inititalize object
}

Я освобождаю все объектыв методах dealloc, например, так:

[object release], object = nil;

Теперь я чувствую, что должен упомянуть, что моя игра работает на представлениях.У меня есть основной вид, который загружает подвиды в одну переменную под названием «currentView».Я переключаюсь между представлениями следующим образом.

if (currentView != nil) {
    [currentView dealloc];
}
currentView = [[newView alloc] initWithVariables:vars];

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

Мне нужна эта информация КАК МОЖНО СКОРЕЕ, и если вы можете помочь, она будет ДЕЙСТВИТЕЛЬНО оценена.Спасибо.

РЕДАКТИРОВАТЬ: Когда я запускаю его через инструменты, он показывает память, используемую моим приложением.и у него странная картина.Когда он загружает первый вид, он начинается с ок.17mb использовал.Затем я переключаюсь на второй вид, и он идет до 22 МБ.Теперь, если я вернусь к первому виду, он не опустится до 17 МБ, а вместо этого до 20 МБ.Теперь, когда я продолжаю переключаться между двумя, он идет между 22 МБ и 20 МБ и остается почти таким же.Как это можно объяснить?

РЕДАКТИРОВАТЬ 2: Шаблон, описанный в приведенном выше редактировании, является неизменным на протяжении всей игры.Из-за этой непротиворечивости я заметил утечку на уровне 70 КБ в моей игре.Очевидно, что это не должно вызывать каких-либо проблем, пока моя игра остается менее 100 МБ, поэтому, если они не играют в мою игру в течение РАСШИРЕННЫХ периодов времени, это не должно быть проблемой.

Хотя я все еще хотел бы знать, как я могуотследить утечку 70 КБ.

1 Ответ

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

Вы должны использовать release вместо dealloc.Каждый вызов alloc должен соответствовать release или autorelease;в вашем случае release, потому что вы хотите контролировать, когда он будет освобожден.

...