类.h:
@property (strong, nonatomic) UIFont *font;
类.m:
@interface Class()
@property (strong, nonatomic) UILabel *titleLabel;
@end
- (void)setFontUIFont *)font
{
self.titleLabel.font = font;
}
- (UIFont *)font
{
return self.titleLabel.font;
}
在此示例中,Class.h
中声明的 font
属性没有支持实例变量,因为两个访问器都被覆盖,而是用作“代理”到 titleLabel.font
上,否则无法从类外部访问,因为它不在公共(public)接口(interface)中。
这是对覆盖访问器的合法使用,还是这种方法存在缺陷?做属性属性,例如strong
、weak
在这里有什么区别?
你在这里做的很好。属性不必由 ivar 支持。
我已经编写了属性,其中 setter 和 getter 只需向 NSUserDefaults
写入/读取值。
至于这样的属性是strong
还是weak
等,你应该根据你希望提供给客户端的“合约”来判断属性(property)。在您发布的情况下,您应该使您的属性与您正在代理的属性相同(您正在为 font
执行此操作)。
关于ios - 使用不受实例变量支持的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324817/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |