我经常使用延迟加载来实例化自定义类、数组等。模式通常是:
@property (strong, nonatomic) Class *class;
...
- (Class *)class
{
if(!_class) _class = [[Class alloc]init];
return _class;
}
是否可以使用相同的模式来配置 UI 元素?例如,我不想在 ViewWillAppear 中格式化我所有的按钮和视图,而是将格式化放在 getter 中。例如:
- (UIButton *)button
{
if(!_button) {
_button = [[UIButton alloc]init];
self.button.backgroundColor = [UIColor redColor];
}
return _button;
}
问题是我正在使用情节提要,XCode 实例化了按钮,所以询问它是否为 nill 应该总是返回 false。所以背景永远不会改变。如果我删除 if-then,那么每次访问 getter 时都会设置背景,这可能没问题但不是最佳的。
那么,如何使用 UI 元素的 getter 来配置元素呢?