gpt4 book ai didi

ios - 当声明@property (nonatomic) BOOL varname 时,使用带有 _varname 的未声明标识符

转载 作者:行者123 更新时间:2023-11-28 21:21:19 24 4
gpt4 key购买 nike

Xcode 8 中遇到非常奇怪的错误:

我在 .h 文件中得到了属性:

@property (nonatomic) BOOL isInAirmode;

以及 .m 中的访问器:

- (void)setIsInAirmode:(BOOL)isInAirmode
{
_isInAirmode = isInAirmode;
[self da_postEvent:self.isInAirmode ? DAEventAirON : DAEventAirOFF];
}

- (BOOL)isInAirmode
{
return _isInAirMode || _isTrailer;
}

我遇到了编译错误。但是当我删除 getter 时,一切都很好。这是为什么?

xcode 8 bug

派生数据被清理了好几次,我只是想知道这怎么可能?

最佳答案

这不是包。 Xcode 7 上的行为相同。当您实现 getter 时,LLMV 不会生成实例变量,因为它不知道,您是否真的需要它。所以你需要手动添加它。有几种方法可以做到这一点:在类定义或类扩展或类实现中,甚至使用 @synthesize isInAirmode = _isInAirmode;

对于 bool 属性的代码风格有一个常见的建议:声明它们时不要使用 is 动词,在 getter 中添加 is。在你的美食中,它将是:

.h

@property (nonatomic, getter = isInAirmode) BOOL inAirmode;

.m

@synthesize inArimode = _inArimode;

- (void)setInAirmode:(BOOL)inAirmode
{
if (_inArimode == inArimode) {
return;
}

_inAirmode = inAirmode;
[self inAirmodeDidChange];
}

- (BOOL)isInAirmode
{
return _inAirMode || _trailer;
}

- (void)inAirmodeDidChange
{
[self da_postEvent:self.isInAirmode ? DAEventAirON : DAEventAirOFF];
}

关于ios - 当声明@property (nonatomic) BOOL varname 时,使用带有 _varname 的未声明标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39726153/

24 4 0
文章推荐: javascript - 无法让 'onChange' 在 IE 中的