2015-06-08 4 views
0

В качестве теста, чтобы гарантировать, что сцены в настоящее время dealloc'd я уже добавив:Вызов метода Dealloc в комплект спрайтов

-(void)dealloc{ 

NSLog(@"scenename Dealloc); 
} 

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

Я также слышал, что использование nslog в этом методе в сцене заставляет его перезаписываться и поэтому не вызываться правильно, в результате чего сцена не является dealloc'd, это правда? Может ли это быть проблемой, вызвавшей крушение игры в настоящее время? Я вижу колебания памяти (вверх и вниз) даже при наличии этих сообщений журнала.

+1

Все, что я могу сказать, если dealloc не называется, он не был выпущен. Таким образом, у вас, вероятно, проблема с памятью. Я вытащил инструмент распределения, выполнил поиск имени класса объекта, который не был выпущен, и проверьте количество удержаний. Вы можете смотреть, как он идет вверх и вниз. Вероятно, он еще +1, когда вы думаете, что его нужно отпустить. Часто это происходит из-за сильного делегата или сильной ссылки на себя в блоке. Удачи! –

+0

Кроме того, размещение NSLog там ни в чем не должно сказаться. Он все равно будет отменен правильно. Также не вызвало бы сбой. Было бы полезно, если бы вы разместили код на своей сцене, который не будет освобожден, чтобы найти проблемную область. –

+0

Спасибо Бен, я прочитал в предыдущем сообщении, что установка nslog в этом методе в сцене переопределит существующий метод dealloc, я предположил, что это не так, но стоит спросить. Похоже, это может быть проблема с сильной ссылкой, время для ее поиска. Спасибо, я отправлю код, если я не смогу понять его с немного дополнительной проверкой. – SmokersCough

ответ

0

Как было ранее предложено людьми выше, у меня была утечка памяти, и это было разрешено посредством отладки и инструментов.

1

Если вы хотите увидеть, какие объекты существуют в вашей игре в разных точках, вы можете использовать инструмент «Аллюкации». Вы можете найти его под заголовком XCode> Open Developer Tool> Инструменты

Оформить список по имени и найти название вашего проекта. Вы должны увидеть, сколько из ваших различных игровых объектов существует в памяти.

+0

Спасибо Хамоби. Я использовал инструменты, чтобы определить предыдущую проблему с памятью. Я еще раз посмотрю. – SmokersCough