2011-02-11 20 views
0

我一直感到很遺憾有UIViewController的看法顯式類型爲UIView,因爲控制器子類有自己的視圖類型,並有重鑄UIView爲正確的類型:爲什麼不把UIViewController的視圖鍵入爲id?

@interface MyController : UIViewController {} 
@implementation MyController 

- (void) viewDidLoad { 
    [(MyView*)self.view doThisOrThat]; 
} 

// Or define a custom accessor: 
- (MyView*) myView { 
    return (MyView*) [self view]; 
} 

這種感覺啞。如果UIViewController的視圖被輸入爲id,我們可以在沒有投射的情況下離開。由於視圖控制器是用於子類化的,所以這看起來像是一種自然的設計選擇。缺點是什麼? (還是有更簡單的方法來克服明確的視圖類型問題?)

回答

1

使用id只是因爲它允許你調用任何方法沒有編譯器警告是一個壞主意,根據我的口味。你可以很容易地調用一個即使在你的視圖子類中也沒有定義的方法,而沒有任何編譯時間的警告,以後會導致崩潰。

我會做另一個IBOutlet MyView* myView並將我的視圖不僅連接到view而且連接到myView

+0

它讓我感到有兩個不同的出口只是爲了解決打印問題,但謝謝你,這是一個合法的觀點。 – zoul 2011-02-11 09:33:25

相關問題