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]代码>。由于方法未知,无法编译。