EXC_BAD_ACCESS KERN_INVALID_ADDRESS 当访问 NSManagedObject 的 属性

EXC_BAD_ACCESS KERN_INVALID_ADDRESS when accessing an NSManagedObject's Property

在我的 NSManagedObjects 中,我有一些属性 A) 我不想或不需要存储和 B) 只计算一次并且只在需要时计算,这样就不会重复计算(因为它们有点昂贵)。

这是我正在谈论的代码:

public class Sample: NSManagedObject {

    @NSManaged public var id: NSNumber
    @NSManaged public var anotherProperty: String?
    var orderedCustomObjects : Array<CustomObject>?

    func getOrderedCustomObjects() -> [CustomObject] {
        // application crashes on this line.
        if (orderedCustomObjects == nil) {
            // compute the custom object array here.
        }
        return orderedCustomObjects!
    }
}

public class CustomObject {
    var price : String?
    var quantity : String?
}

我在一条看似无害的线路上遇到以下崩溃,该线路在计算之前检查 属性 是否为 nil:

崩溃:com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000048

如能就我可能会因此崩溃的原因提供任何帮助,我们将不胜感激。

如评论中所述,答案是该对象在另一个线程上被删除,导致它在主线程上被释放。