gpt4 book ai didi

ios - 是否可以在 objective-c 的getter的延迟实例化中使用三元运算符?

转载 作者:行者123 更新时间:2023-12-01 17:23:00 25 4
gpt4 key购买 nike

假设我有一个名为Deck类的牌组的属性,

    @property (strong, nonatomic) Deck *deck;

我可以按如下所示懒惰地实例化它,
    - (Deck *)deck{
if(!_deck) _deck = [[Deck alloc] init];
return _deck;
}

但是,是否可以使用C三元运算符如下将其延迟实例化?
    - (Deck *)deck{
return _deck ? _deck:[[Deck alloc] init];
}

最佳答案

实际上,我更喜欢您的初始版本,因为它易于阅读。

如果您想花更少的时间写更少的代码,可以使用Conditionals with Omitted Operands,它是GCC扩展
Clang也了解:

- (Deck *)deck{
return _deck ? : (_deck = [[Deck alloc] init]);
}
_deck仅计算一次,并且只有 nil才赋值。

关于ios - 是否可以在 objective-c 的getter的延迟实例化中使用三元运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com