Learn iPhone, iOS, Objective-c, Swift, cocos2dx, Unity and ….?

iOSやAndroid開発でのエラー解決法や便利tipsのメモ

RSS Feed

deallocがよばれても変数の値が破棄されない

0 Comments
Posted by Kuro on 2013/01/17

スポンサードリンク

TopScene→GameScene→TopSceneという画面遷移をreplaceSceneで実装したのですが、2度目にGameSceneに遷移したときにオブジェクトや変数の値が破棄されずに残っているという問題が起こりました。
replaceSceneは現在のSceneを破棄して新しいSceneを生成するという仕様のはずです。
deallocが呼ばれていることも確認しました。
なぜSceneが破棄されているのにオブジェクトや変数が残ってしまうのか???

こういう宣言の仕方をしていたことが原因でした。
{}(ブレイス)で囲わないとstatic変数になってしまいます。

static変数とはプログラムが終わるまで特定のメモリー内に値を保持し続ける変数のことです。
つまり、static変数は変数を宣言したオブジェクトを破棄してもプログラムが続いているあいだは残るということです。

deallocが正しく呼ばれているか確かめる方法

これでdeallocが呼ばれたときにクラス名、メモリ領域、タグをログに吐いてくれるようになります。

スポンサードリンク


You can leave a comment, or trackback from your own site.

0 Comments

You can be the first to comment!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

Popular Posts