使编译器在以编程方式构建 ViewController 的视图时了解 NSView 子类方法



我已经创建了NSView的一个子类,它允许我通过- (void)setBackgroundColor:(NSColor *)aBackgroundColor方法轻松地改变背景颜色。

我想让我的视图控制器的主视图是这个子类,所以我用self.view = [[BetterNSView alloc] initWithFrame...初始化它。

在下一行,我尝试设置它的背景颜色:[self.view setBackgroundColor:[NSColor greenColor]]。但是编译器抱怨说NSView没有setBackgroundColor方法

为了解决这个问题,我需要使用类型转换:[(BetterNSView *)self.view setBackgroundColor:[NSColor greenColor]];。这工作。但是我不想需要类型转换。

我如何告诉编译器,view属性的视图控制器是BetterNSView子类?请记住,我没有使用IB

你有两个合理的选择。

  1. 在你的视图控制器上创建一个accessor,用正确的类型传递给view属性。
  2. 处理类型转换

实际上,这是类型转换是可以的情况之一。

最新更新