2012-11-20 19 views
2

我在Xcode 4.5.2中工作。
我有以下問題:
當我提出從非空的工程項目 - 這是觀點是從故事板初始化,有時當我添加代碼Objective-c:addSubview之後的viewDidLoad的遞歸調用

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
b.frame = CGRectMake(20, 20, 100, 100); 
[self.view addSubview:b]; 

到viewDidLoad方法是遞歸在addSubview方法調用後再次調用,有時(保佑天空)它不會。
任何人都可以告訴我什麼是問題以及如何解決它?
我的感謝。

+0

你可以提供這種方法嗎?(或者至少是更多的代碼,理想情況下是整個方法)?您提供的樣本不足以確定答案。 – WDUK

回答

1

編輯:由於@WDUK正確指出,下面的答案是錯誤的。這將解釋在loadView遞歸,而不是viewDidLoad

老,錯誤的答案:當視圖屬性尚未設置調用-[super viewDidLoad] 後發生

遞歸調用然後調用self.view

您可能只是忘了將視圖連接到文件的所有者的 視圖插座。

+0

你確定嗎?這會發生在'loadView'中,但不是'viewDidLoad',因爲(通過方法的定義),'viewDidLoad'意味着視圖屬性已經被加載。 – WDUK

+0

@WDUK哦,對,我的錯。感謝您指出了這一點。 –

+0

謝謝。這是關鍵。 –

0

當設備的可用內存不足時,如果視圖當前不可見,它可以解除視圖分配。您應該始終確保正確處理此行爲。

例如,當您使用導航或tabbar控制器切換到另一個視圖時,可能會發生這種情況。

+0

這不會觸發*遞歸*調用。 –

+0

O我看,在調試(日誌和檢查控制檯)之外運行時是否會發生相同的行爲? –