我有一个 UILabel
属性,该属性通常为 nil
,但我对其进行了编码,以便在我使用它时,如果它为 nil
,它将被初始化并准备好通过 getter 使用。但是,我创建了一个错误,因为当我检查此属性是否为 nil
时,它会对其进行初始化,使其不再为 nil
。
是否可以在不调用其 getter 方法的情况下查明属性是否为 nil
?
if (self.myLabel) {
//run code when this property already is initialized, but don't if it is nil
}
//Getter:
- (UILabel *)myLabel {
if (!_myLabel) {
_myLabel = [UILabel alloc] init...
}
}
最佳答案
一种方法是提供一个单独的 BOOL
属性,告诉调用者 _myLabel
变量是否为 nil
:
@property (nonatomic, readonly) BOOL isLabelSet;
...
-(BOOL)isLabelSet {
return _myLabel != nil;
}
假设您有该类的源代码,您还可以通过显式声明并标记为 @public
来启用对 baking 变量的直接访问,但这样做会破坏封装。
关于ios - 是否可以在不调用 getter 的情况下检查属性是否为 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870116/