NSControl isEnabled 仅在 OS X v10.0 到 OS X v10.9 中可用

Posted

技术标签:

【中文标题】NSControl isEnabled 仅在 OS X v10.0 到 OS X v10.9 中可用【英文标题】:NSControl isEnabled only available in OS X v10.0 through OS X v10.9 【发布时间】:2015-02-24 21:24:32 【问题描述】:

有人知道为什么 NSControl 的 isEnabled 在 setEnabled: 仍在工作时被删除了吗?

【问题讨论】:

【参考方案1】:

在 OS X 10.10(和 ios 8)中,Apple 框架中的许多 getter/setter 方法对被 @property 声明所取代。这既使标头接口更清晰,也使这些 API 更容易导入 Swift……好吧,Swifty。

// Before
- (BOOL)isEnabled;
- (void)setEnabled:(BOOL)enabled;

// After
@property(getter=isEnabled) BOOL enabled

文档尚未完全更新以反映这一点,因此它错误地将 isEnabled 显示为已弃用,即使 @property 声明意味着您仍然可以执行以下任何操作:

BOOL foo = [control isEnabled];
[control setEnabled:YES];
BOOL bar = control.enabled;
control.enabled = YES;

【讨论】:

谢谢!这也适用于continuous 方法/属性。然而,NSControl 文档中删除的许多其他声明 实际上已被弃用:我尝试在 this answer 中对此进行一些解码。

以上是关于NSControl isEnabled 仅在 OS X v10.0 到 OS X v10.9 中可用的主要内容,如果未能解决你的问题,请参考以下文章

NSControl 的 setCellClass 在 OS X 10.10 中已弃用,有啥替代方法可以覆盖 NSTextField 的单元格类?

仅在网格(WPF)中为一行添加IsEnabled

子类化 NSControl,在 Swift 中不调用 IBAction

仅在启用按钮时输入

NSControl 和 NSCell:以正确的方式管理单元状态

NSCell 和 NSControl 之间的关系/区别是啥?