2011-07-15 16 views
0

私はiPhoneのプログラミングには新しいので、正しい方法を使用していないかもしれません...とにかく、私はゲームを作ろうとしています。敵を作成したいとき、私は新しいUIImageViewを作成します。 :enemyBirdが飛び回ると、自身のことを行うことができますので UIImageViewクラスをリリース/削除するにはどうすればよいですか?

enemyBird *asdf = [[enemyBird alloc] initWithFrame:CGRectMake(30, -20, 45, 30)]; 
[self.view addSubview:asdf]; 

enemyBirdが初期化

は、NSTimerが行われます。

if (self.center.y > 500) 
    { //[self dealloc]; //doesn't work 
     //[self release]; //doesn't work 
     //[self removeFromSuperview]; //this makes it disappear, but the NSTimer is still running 
    } 

しかし、私はそれを行う方法がわからない。今、私はここに、このコードでは、それは画面を離れた後、鳥を取り除きたいです。私はこれを正しくしていますか?それとも、私はこれをやるべきか全く違う方法がありますか?前もって感謝します。

答えて

1
  1. ビューでは、コントローラのビューに追加した直後に、あなたのImageViewのを解放することができ、そのすべてのサブビューを保持したよう:

    enemyBird *asdf = [[enemyBird alloc] initWithFrame:CGRectMake(30, -20, 45, 30)]; 
    [self.view addSubview:asdf]; 
    [enemyBird release]; 
    
  2. あなたのタイマーハンドラーでは、鳥がスーパービューからそれを削除するときに、nilへの参照を設定して(割り当て解除されたインスタンスにアクセスしないようにする)、タイマーを無効にして再起動しないようにします。

    if (self.center.y > 500) 
    { 
        [enemyBird removeFromSuperview]; 
        enemyBird = nil; 
        [timer invalidate]; 
    } 
    
+0

ありがとう。私は[タイマー無効化]について知らなかった。とてもうまくいったので、ありがとう。 – Bao

1

removeFromSuperviewを画像ビューに送信して、メインビューから除外する必要があります。 同時に、タイマーを無効にしても問題ありません。

また、画像ビューをalloc/initしてメインビューに追加した直後に、それを解放する必要があります。ゲーム開発、より良い利用cocos2dフレームワークの

2

:It's非常に簡単