簡體   English   中英

如何釋放/刪除 UIImageView class?

[英]How do I release/delete a UIImageView class?

我是 iPhone 編程的新手,所以我什至可能沒有使用正確的方法......無論如何,我正在嘗試制作游戲,當我想創建一個敵人時,我制作了一個新的 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
    }

但我不知道該怎么做。 我這樣做正確嗎? 還是有完全不同的方式我應該這樣做? 提前致謝。

游戲開發更好地使用 cocos2d 框架:這很容易

您必須將removeFromSuperview發送到您的圖像視圖,以將其置於主視圖之外。 同時,您使計時器無效,您可能會沒事。

同樣在分配/初始化圖像視圖並將其添加到主視圖之后,您應該釋放它。

  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]; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM