2011-02-11 27 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

相关问题