2012年5月16日水曜日

インスタンス=0でハマったよ

Objective-C+Cocos2dで開発しててちょっとハマったのでメモ。

画面のinit処理
スプライト生成
画面に追加

ってことしてて、別関数で上記でインスタンス化したスプライトを参照してたけど
なぜかメモリ上は開放されてて画面に反映されないよって状態でした。

原因はコード上、

スプライト=0

って書いちゃってたこと。
※本当はただの整数型の初期化処理部分

構文上のエラーにもならないし、おまけに参照カウンタが
2だったのが0になってる。。。

ちょっとしたコーディング上のケアレスミスなんだけども
すぐには発見できなかった。。。orz

これ、

インスタンス=nil

と同じ効果なんだろうか。。。
ちょっと余裕出来たら調べてみよう。




2 件のコメント:

  1. instance=nilは内部で¥0なんじゃない?もしかして。
    古いCの実装だとそうなってるから推測です。

    返信削除
    返信
    1. ステップ実行しながら調べてみたら、=nilと=0で同じような挙動になってるので
      ご指摘のとおりかもしれないですね。

      古いCだとそうなってるんですね、勉強になります。。。φ(..)メモメモ

      ありがとうございます!

      削除