筆尖(或XIB)文件幾乎與內存管理無關。他們出於方便的目的。使用可視化工具佈置用戶界面並連接操作比手動編碼所有自動調整掩碼和操作更容易。然而,你是對的,你不想一次加載所有的視圖到內存中,因爲這將是一個浪費。
使用多個XIB文件對保持項目結構更有用。 (在某些情況下,您甚至可以爲單個視圖控制器使用替代筆尖,儘管常見情況是1:1的比例。)
addSubview
和presentModalViewController
方法真的不同。 addSubview
需要一個視圖並將其添加到給定視圖(或將其帶到最前面)。這意味着你將負責保留視圖控制器,以避免奇怪的事情發生。這將用於在主視圖中呈現其他視圖,例如在橫幅或類似內容中顯示消息。
相比之下,presentModalViewController
用於呈現短時間的單個視圖,例如登錄表單或信息屏幕。您將整個視圖控制器零碎地傳遞,並且通常會在此後立即釋放視圖控制器。事實上,經常可以看到這樣的代碼:
SomeViewControllerSubclass *myVC = [[SomeViewControllerSubclass alloc] initWithNibName:@"SomeViewControllerSubclass" bundle:nil];
[self presentViewController:myVC];
[myVC];
呈現通知後立即如何釋放SomeViewControllerSubclass
實例。你不能用addSubview
這樣做,因爲那時你可能會留下一個沒有控制器的視圖。你必須自己保留它。
Thx男人,我還有一個問題。 – vburojevic
Whz在某些教程中使用:initWithNibName:nill 改爲initWithNibName:@「SomeViewControllerSubclass」 – vburojevic
在這些情況下,它們可能是在代碼中手動配置視圖。 – Moshe