Как правильно отчистить память после работы приложения?
Доброго времени суток.
Я пишу игру на Obj-C.
Во время прохождения уровня, у пользователя есть возможность (кнопка) начать уровень сначала.
При написании этого уровня было использовано много массивов, таймеров, которые где-то вызывались один в другом и тд. На практике выходит, что каждую новую попытку, нормальная скорость шарика (главного объекта интерфейса) падает на глазах. Я думаю, что дело в памяти. Потому, вопрос: как правильно отчищать массивы, удалять таймеры и так далее. Можем быть есть какая то специальная процедура для очистки памяти?
Ни в коей мере не являясь экспертом по ObjC могу посоветовать только одно:
Соблюдайте философию ObjC - класс который владеет каким либо объектом единолично, должен отвечать за его удаление, не забывайте посылать release всем объектам, которыми владеет ваш класс. Ну и прогоните в конце - концов ваш код через соответствующие утилиты в XCode, он вам покажет где у вас утечка, сколько памяти занимаете, как ее выделяете и как очищаете.
@GunGraveKoga "не забывайте посылать release всем объектам, которыми владеет ваш класс" эра ручного управления памятью в objective-c давно прошла. Теперь нельзя самостоятельно посылать релиз запросы объектам.
А вот тут по подробнее пожалуйста. Прям запретили? Не скомпилируется теперь, если я пошлю объекту release? Правда хочется узнать, потому что полгода назад все вроде посылалось.
Ну да, при использовании ARC не обязательно писать свою реализацию release, однако если используются примитивы из C память для которых выделялась путем malloc calloc realloc то нужно писать свою реализацию метода dealloc, на пример если используются элементы CoreFoundation.