ios - 是否可以在不调用 getter 的情况下检查属性是否为 nil?

标签 ios objective-c properties getter null

我有一个 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/

相关文章:

ios - swift 3 : Convert amount value into words

iphone - PhoneGap 为 iPhone 捕获 'Go' 按下事件

ios - 添加后如何更改自动布局约束

ios - iOS/UIKit 是否内置了对 dinging 之类的调度滚动的支持

ios - SetImage 隐藏标题文本...无法使用背景图像,因为我需要 EdgeInsets

objective-c - 为什么在多个线程内修改NSMutableSet时崩溃,但是在同一线程内修改自定义对象Person却不会崩溃?

javascript - 将字符串数组与具有字符串属性的数组对象进行比较的最佳方法?

ios - iOS7/iOS8后台下载文件10分钟后不停

c# - convert to auto-property 是什么意思?

c# - CodeDOM:将 DebuggerStepThroughAttribute 添加到属性