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
如能就我可能会因此崩溃的原因提供任何帮助,我们将不胜感激。
如评论中所述,答案是该对象在另一个线程上被删除,导致它在主线程上被释放。
在我的 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
如能就我可能会因此崩溃的原因提供任何帮助,我们将不胜感激。
如评论中所述,答案是该对象在另一个线程上被删除,导致它在主线程上被释放。