斯威夫特的布尔二传手

恐慌的

我正在使用像这样的自定义吸气剂

var currentShowLiked: Bool {
    get {
        return [some condition met] ? true : false
    }
    set {
        self.currentShowLiked = newValue
    }
}

而且效果很好。但是,我希望能够对变量进行设置truefalse重新赋值,但是Swift强制我实现了一个setter,它不会产生任何警告,但是在运行时,如果我要更改变量的值,则应用程序将崩溃并崩溃。EXC_BAD_ACCESS (code=2...)在控制台中没有明显的原因或理智的解释指向设置器行和消息warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.

我为什么要这么做?

地方

您处于递归上下文中。

您不能在currentShowLiked属性主体中使用currentShowLiked,如下所示:

// Recursive, Infinite loop
self.currentShowLiked = newValue

要解决此问题,请执行以下操作:

private var _currentShowLiked : Bool

var currentShowLiked: Bool {
    get {
        return [ some condition met on _currentShowLiked ] ? true : false
    }
    set {
        self._currentShowLiked = newValue
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章