在我的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?
}
我在一个看似无害的线路上遇到以下崩溃,该线路在计算之前检查该属性是否为零:
崩溃:com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000048
任何帮助都会被理解为什么我可能会因此而崩溃。
答案 0 :(得分:1)
正如评论中所提到的,答案是该对象在另一个线程上被删除,导致它在主线程上被释放。