如何在Objective-C类中使用自定义getter方法

Mar*_*n R 3 objective-c getter-setter

我注意到对于具有自定义getter方法的属性

@interface MyClass : NSObject
@property (nonatomic,getter=isActive) BOOL active;
@end
Run Code Online (Sandbox Code Playgroud)

BOOL b = myObj.isActive
Run Code Online (Sandbox Code Playgroud)

BOOL b = myObj.active
Run Code Online (Sandbox Code Playgroud)

可以用来获取价值.在这两种情况下isActive都调用该方法.

  • 获得房产价值的这两种方式有什么区别吗?
  • 什么是"推荐"的方式?

das*_*ght 9

这两者没有区别.如果从英语语法的角度来看替代名称更有意义,你想要打破已建立的XYZ+ 约定时使用自定义名称setXYZ.例如,

if ([myRobot isActive]) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

阅读比...更好

if ([myRobot active]) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

你本可以宣称你的财产为isActive,但那时你的设定者会是setIsActive,这听起来比setActive.