我发现很多时候我想要一个综合的只读属性,我只是根据其他变量来实现该属性的 getter 方法,而不需要 ivar,例如(注意:我正在定义界面中的 ivars,因为我使用的是 OmniGraffle UML 软件,它无法识别由合成属性自动生成的 ivars):
@interface Editor : UIView {
BOOL _wordWrap;
BOOL _showLineNumbers;
NSDictionary *_options;
}
@property (nonatomic) BOOL wordWrap;
@property (nonatomic) BOOL showLineNumbers;
@property (nonatomic, copy, readonly) NSDictionary *options;
@end
@implementation Editor
@synthesize wordWrap = _wordWrap;
@synthesize showLineNumbers = _showLineNumbers;
@synthesize options = _options;
- (NSDictionary *)options {
return @{
@"WordWrap" : [NSNumber numberWithBool:self.wordWrap],
@"ShowLineNumbers" : [NSNumber numberWithBool:self.showLineNumbers],
};
}
@end
在上面的Editor
类中,我是否需要_options
在头定义中定义 ivar,更重要的是自动生成的 ivar 是否占用符号表中的内存或空间?copy
此外,在这种情况下使用,retain
或 no value会更有效吗?只是好奇。