Objective-C :(私有/公共属性)为外部类调用创建一个readonly属性,为self调用创建readwrite

Oli*_*ver 31 cocoa objective-c

您是否知道一种方法可以为外部调用创建一个属性readonly并为内部调用进行readwrite?

我以前读过很多东西

在.h

@property(nonatomic, readonly) NSDate* theDate;
Run Code Online (Sandbox Code Playgroud)

在他们中

@interface TheClassName()
@property(nonatomic, retain) NSDate* theDate;
@end
Run Code Online (Sandbox Code Playgroud)

但是在编译.m时,这会引发警告"TheClassName类继续中的属性theDate属性与类TheClassName属性不匹配".

无论如何,它似乎工作(可以阅读,但不能从课外设置,可以从内部做两个)但我应该错过somehting以避免警告.或者,如果你知道更好的方法来做到这一点......

Rit*_*its 63

在你的.h:

@property(nonatomic, retain, readonly) NSDate* theDate;
Run Code Online (Sandbox Code Playgroud)

在你的.m:

@interface TheClassName()
@property(nonatomic, retain, readwrite) NSDate* theDate;
@end
Run Code Online (Sandbox Code Playgroud)

  • `readwrite`明确表示您确切知道自己想要什么.有些人正在将iOS中的"始终使用`非原子`"口号延续到Cocoa(我当然这样做); 它可能是一项项目范围的政策. (4认同)