为什么不将UIViewController的视图键入为id?

时间:2011-02-11 08:13:40

标签: cocoa-touch uiviewcontroller

我一直认为将UIViewController的视图显式输入为UIView是很遗憾的,因为控制器子类有自己的视图类型,必须重新设置UIView正确的类型:

@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 个答案:

答案 0 :(得分:1)

根据我的口味,使用id只是因为它允许你在没有编译器警告的情况下调用任何方法是一个坏主意。即使在视图子类中没有任何编译时警告,您也可以轻松调用一个未定义的方法,稍后会导致崩溃。

我会制作另一个IBOutlet MyView* myView并将我的观点不仅连接到view,还连接到myView