聯繫:能夠使用此方法加載用戶界面(xib文件)到咱們的代碼中,這樣,能夠經過操做這個加載進來的(xib)對象,來操做xib文件內容。
區別:
1. ShowViewController的initWithNibName方法
ShowViewController * showMessage = [[ShowViewController alloc]
initWithNibName:@"ShowViewController" bundle:nil];
self.showViewController = showMessage;
[showMessage release];
2.VideoCellController的loadNibNamed方法
NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"Save3ViewController"
owner:self options:nil] ;
self.showViewController = [nib lastObject];
[nib objectAtIndex:0];
總結:
只看他們初始化,那可能感受是同樣的。可是若是,打開分別看xib的關係的時候,才恍然大悟,原來他們的集成類都不同。
1. initWithNibName要加載的xib的類爲咱們定義的視圖控制器類
loadNibNamed要加載的xib的類爲NSOjbect。
(好比:甲,乙都買了一個iPhone,可是,甲的是本身的錢,而乙用的是某某的錢)
2.加載方式不一樣
initWithNibName方法:是延遲加載,這個View上的控件是 nil 的,只有到 須要顯示時,纔會不是 nil
loadNibNamed方法:即時加載,用該方法加載的xib對象中的各個元素都已經存在。
(認真理解這句幫規:when using loadNibNamed:owner:options:, the File's Owner should be NSObject, the main view should be your class type, and all outlets should be hooked up to the view, not the File's Owner.)