2011-07-15 61 views
0

我是iPhone編程的新手,所以我甚至可能不會使用正確的方法......無論如何,我正在嘗試製作遊戲,並且當我想創建一個敵人時,我製作了一個新的UIImageView,就像這樣:如何釋放/刪除UIImageView類?

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

當enemyBird初始化,一個NSTimer作出這樣的enemyBird可以繞飛和其做自己的事情。現在,我想擺脫鳥離開後,屏幕,在這裏驗證碼:

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. 在當鳥離開屏幕從上海華刪除,設置參考零您的計時器處理程序(以確保你不會訪問釋放的實例),所以它不會再次觸發無效定時器:

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

謝謝。我不知道[timer invalidate];所以制定了出色的,謝謝。 – Bao

1

你必須發送removeFromSuperview到你的圖像視圖,把它放在主視圖。 在同一時間,你使計時器無效,你可能會沒事。

也只是在alloc/init映像視圖並將其添加到主視圖後,您應該釋放它。

2

遊戲開發更好地利用cocos2d的框架:It's很容易