在-viewDidDisappear
(而不是-viewWillDisappear
;你仍然在屏幕上)最好的事情是要撥打self.view = nil
。這將轉儲整個視圖控制器的視圖,該視圖將在下次需要時自動重新加載。
如果您對這些視圖有任何IBOutlet,則您需要將它們設置爲零,否則它們將不會釋放。假設你有這樣的設置:
@interface MyViewController : UIViewController
{
UIImageView *_imageView;
}
@property (readwrite, retain) IBOutlet UIImageView *imageView;
@implementation MyViewController
@synthesize imageView = _imageView;
然後你需要調用self.imageView = nil
在`-viewWillDisappear。
通常應該不叫你的高德-release
除了在他們的存取和-dealloc
。釋放它們的正確方法是使用訪問器將它們設置爲零。
Caling -release
當retainCount爲1時會立即調用free()
,這將恢復內存。但請記住,其他事情可能會保留該對象,包括自動釋放池,因此您可能無法確定在任何給定時間的保留計數。
我強烈建議人們,當他們釋放一個變量,立即將其設置爲零。這不影響變量;它只是保護你免於追逐你已經發布的指針,所以現在可能指向未分配的內存。因此,在-dealloc
,我看起來像這樣的臺詞:
[_stuff release]; _stuff = nil;
[_otherStuff release]; _otherStuff = nil;
「那你就需要調用self.imageView =零在`-viewWillDisappear」 >>>你真的不與-viewDidDisappear? – Thanks 2009-05-24 17:50:58