2012-03-04 47 views
1

我使用ARCiPhone開發 - ViewDidUnload

在一些教程,我看,他曾把一個UILabel然後在方法ViewDidUnload他寫道:self.theLabelVariable =零; 我從來沒有見過他再次在ViewDidUnload中寫入任何東西..但是。

我有點困惑,該代碼應該在該方法中去。

1. 什麼時候該寫什麼? 已評論: 「發佈主視圖的任何保留子視圖,例如self.myOutlet = nil;」 不知道這是什麼意思,雖然

2. 它也有一個「[超級ViewDidUnload]」這是什麼?

3. 有人說「如果不打算再次使用它,這是一個好主意」。 但在有人寫「self.TheLabelVariable = nil」的教程中,當我點擊主頁按鈕,然後再次啓動應用程序時,一切正常。 或者當你點擊主頁按鈕時不是cViewDidUnload? 我想第三個問題是:它什麼時候被調用?

回答

0

您應該對所有IBOutlets做到這一點。你應該全部設置爲nil。並且[super viewDidUnload];正在卸載超級視圖!它有點像[super viewDidLoad];

0

1 - 您應該使用viewDidUnload釋放(如果它是一個屬性,則設置爲nil)視圖卸載時不需要的任何對象,如視圖,並且您將再次在viewDidLoad上重新創建。示例:卸載視圖時(通過按主頁按鈕)不需要標籤,然後將其釋放,然後在視圖加載時重新創建它(應用程序出現)。

2 - [super something]調用超類的方法。例如,如果您有一個類是UIViewController的後代,調用[super viewDidUnload]將執行Apple的UIViewController viewDidUnload代碼(可能爲空或不)。

3 - 請參閱1上的示例。但問題是:當您不再需要某個對象時,將它設置爲零,以便它可以被釋放並且不會浪費內存。

讓我知道我是否錯過了某些東西,或者如果有什麼你不明白的東西。

編輯

對於視圖,它們從XIB文件(界面生成器),稱爲IBOutlets初始化,你不需要做self.label =零;因爲UIViewController爲你做。就像它爲你初始化它,它也會釋放它。

+0

很好的答案,只是一個或兩個問題... 1.這是否意味着,如果我把self.label =零;在ViewDidUnload中,我必須做self.label = ViewDidLoad中的東西嗎?但是在他放置self.label = nil的代碼中,他沒有在ViewDidLoad中寫入任何內容,但是在按下主頁按鈕然後重新啓動之後,標籤仍然表示爲「藍色」。和應用程序仍然工作(按按鈕 - >更改標籤的文本) – user1021085 2012-03-05 07:45:52

+0

我編輯我的答案,檢查出來。 – fbernardo 2012-03-05 09:14:08

+0

我使用故事板,如果這有什麼區別。所以如果我去我的故事板,拖動標籤或UITextField中的 – user1021085 2012-03-05 12:03:17