cocoaappkitnscontrol

NSControl isEnabled only available in OS X v10.0 through OS X v10.9


Does anybody know why NSControl's isEnabled has been removed while setEnabled: is still working?


Solution

  • In OS X 10.10 (and iOS 8), many of the getter/setter method pairs in Apple's frameworks were replaced by @property declarations. This both makes the header interface clearer and makes the import of those APIs into Swift more... well, Swifty.

    // Before
    - (BOOL)isEnabled;
    - (void)setEnabled:(BOOL)enabled;
    
    // After
    @property(getter=isEnabled) BOOL enabled
    

    The documentation hasn't been fully updated to reflect that, so it erroneously shows isEnabled as deprecated, even though the @property declaration means you can still do any of the following:

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