子类 Crashlytics

Subclass Crashlytics

我似乎无法将 class Crashlytics 替换为 Swift。我的 Mock 对象如下所示:

class MockCrashlytics: Crashlytics {
    var newValue: AnyObject?
    var newKey: String?

    override func setObjectValue(value: AnyObject?, forKey key: String) {
        newValue = value
        newKey = key
    }
}

但是,如果我实例化这个 class,我会得到超级 class。

调试器示例:

po MockCrashlytics()
<Crashlytics: 0x7fff4188cb30>

我预计:

po MockCrashlytics()
<MockCrashlytics: 0x7fff4188cb30>

当我尝试访问 newValuenewKey 时,我得到 EXC_BAD_ACCESS.

有什么想法吗?

显然 Crashlytics 不应该被子类化。似乎某种机制阻止了正确的子类化,因此开发人员不会篡改他们的代码。

此信息由 Crashlytics/Fabric.io 的服务台提供。

您可以创建一个包装器 class 来保存 Crashlytics 类型的字段变量。将 newValue 和 newKey 的变量添加到包装器 class.

class crashWrapper {

    var newValue: AnyObject?
    var newKey: String?
    //or whatever the correct way to init Crashlytics is
    var crashlytics = Crashlytics()

    override func setObjectValue(value: AnyObject?, forKey key: String) {
        newValue = value
        newKey = key
    }

}