Objective c 目标C:getter=在@property中实际做了什么?

Objective c 目标C:getter=在@property中实际做了什么?,objective-c,Objective C,此代码: @interface SomeClass : NSObject @property(getter=myProp) NSString *prop; @end @implementation AnotherClass - (void)test { SomeClass *s = [[SomeClass alloc] init]; NSString *x = s.prop; NSString *y = s.myProp; } @end x和y都是同一属性的值

此代码:

@interface SomeClass : NSObject

@property(getter=myProp) NSString *prop;

@end

@implementation AnotherClass

- (void)test {
    SomeClass *s = [[SomeClass alloc] init];
    NSString *x = s.prop;
    NSString *y = s.myProp;
}

@end
x和y都是同一属性的值,我得到了两个getter,一个是
-myProp
,另一个是
-prop
,那么声明getter除了自动生成的getter之外,还会添加另一个getter吗

如果这是正确的,我可以使用
getter=
生成多个getter吗


另外,如何删除自动生成的
-prop
getter?

属性语法确实是告诉Objective-C为您合成两种方法的方便方法:

- (void) setProp:(NSString*)value {
    _prop = value ;
}
- (NSString*) prop {
    return _prop ;
}
请注意,根据
非原子的
原子的
,它还可能在其中添加线程同步

所以,当你写作时:

NSLog ( object.prop ) ;
你真的在写:

NSLog ( [object prop] ) ;
如果像这样设置getter,它实际上会创建以下方法:

- (void) setProp:(NSString*)value {
    _prop = value ;
}
- (NSString*) myProp {
    return _prop ;
}
所以,这两条线:

NSLog ( object.prop ) ; // prop is a property with a getter, so it uses [object myProp]
NSLog ( object.myProp ) ; // myProp isn't a known property, so it assumes it's [object myProp]
求助于:

NSLog ( [object myProp] ) ;
NSLog ( [object myProp] ) ;

没有名为
prop
的自动生成的getter方法。它被命名为
myProp
。试试看。将代码更改为
NSString*x=[s prop]。由于方法未知,无法编译。