0

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

我希望我的视图控制器的主视图是这个子类,所以我用self.view = [[BetterNSView alloc] initWithFrame....

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

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

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

4

1 回答 1

2

你有两个合理的选择。

  1. 在您的视图控制器上使用正确的类型创建一个访问器,该访问器只是传递到该view属性。
  2. 处理类型转换。

确实,这是可以进行类型转换的情况之一。

于 2013-04-02T19:51:31.100 回答