xcode - 以编程方式构建 ViewController 的 View 时,使编译器了解 NSView 子类方法

标签 xcode macos cocoa subclass nsview

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

我希望我的 View Controller 的主视图是这个子类,因此我使用 self.view = [[BetterNSView alloc] initWithFrame... 启动它。

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

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

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

最佳答案

你有两个合理的选择。

  1. 在 View Controller 上使用正确的类型创建一个访问器,该访问器仅传递到 view 属性。
  2. 处理类型转换。

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

关于xcode - 以编程方式构建 ViewController 的 View 时,使编译器了解 NSView 子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772886/

相关文章:

ios - Swift 显示警报最佳实践

ios - Apple Accelerate Framework 缩放和标准化向量

iphone - 如何删除动画(CABasicAnimation)?

cocoa - 如何对命令行工具进行沙箱处理?

ios - Apple 如何规定哪些类应该分解为一个类的协议(protocol)接口(interface)?

ios - 如何在 Swift 中定义初始化泛型类型

ios - 警告文本字段中的大写 [仅第一个字]

ios - 如何在 Xcode 中打开 Expo React Native 项目以创建构建

java - Mac OS X Lion 上的 IntelliJ IDEA 11 中未找到 M2_HOME

macos - 在Mac App Store外部分发: Please remove prefix “Developer ID Application:”