ios - 快速执行 BOOL Getter 上的 Exc_bad_access

标签 ios iphone swift getter-setter

<分区>

我想在属性的 bool 值从真到假和从假到真时进行一些操作。
我为此设置了 getter setter,因此我可以对 bool 属性的 setter 执行这些操作。

但总是因 EXC_BAD_ACCESS 代码 = 2 而崩溃,任何人都可以帮助我理解我在这里做错了什么。

var reportActivityStarted:Bool {
        set {
            if self.reportActivityStarted {
                //Operations when boolean is true
            }else{
                //Operations when boolean is false
            }
        }
        get{
            return self.reportActivityStarted
        }
    }  

当我更改它的 bool 值时,它在 get{

处崩溃
self.reportActivityStarted = true

最佳答案

正如 @Unheilig 已经指出的那样,您正在生成一个无限递归调用。事实上,reportActivityStarted 的 getter 正在递归调用自身。

如果您想在设置或检索属性时运行一些逻辑,那么您应该像这样使用属性观察器:

var reportActivityStarted: Bool {
    willSet(newValue) {
        switch reportActivityStarted {
        case true: print("reportActivityStarted is true before assignment") // <- your logic goes here
        case false: print("reportActivityStarted is false before assignment") // <- your logic goes here
        }
    }
}

关于ios - 快速执行 BOOL Getter 上的 Exc_bad_access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35334675/

相关文章:

iphone - 来自 {PRODUCT_NAME} 的 XCode 包标识符格式

iphone - 无法验证本地播放器iOS6

ios - Realm deleteAll() 是否重置主键

ios - 每个 UITableViewCell 都有自己的任务(Webservice 调用),并且应该在其任务完成时重新加载,该任务每 30 秒调用一次

ios - UIAlertController addAction 不起作用

ios - 提交到App Store问题:不支持的体系结构x86

ios - 通知中的应用程序图标出现红色图标

ios - 使用框架!在 Podfile 中导致 'React/RCTBridgeDelegate.h' 未找到

iphone - 雅虎天气 API 的 XML 解析器问题

ios - 导航栏 Swift 中的文本颜色