gpt4 book ai didi

iphone - 从后台线程访问 NSManagedObject

转载 作者:行者123 更新时间:2023-12-03 16:55:05 25 4
gpt4 key购买 nike

所以我知道 NSManagedObjects 不是线程安全的,从后台线程获取对象的最佳方法是使用 [context objectWithId:id]; ,等等传递对象 ID 而不是实际对象。

假设我的 AppDelegate 中有一个全局 NSManagedObject (不是最好的设计模式,只是举例)NSManagedObject *myObject;

从后台线程访问此对象的 objectId 是否安全?像这样:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
objectId = appDelegate.myObject.objectId;
//is this thread safe?
}

最佳答案

这并不安全,因为无法保证在 myObject 上调用 objectID 是安全的。您应该在 block 之外(例如在主线程上)访问 objectID,然后在 block 内使用它。像这样的东西:

NSManagedObjectID *objectID = appDelegate.myObject.objectId;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// use objectID here.
}

关于iphone - 从后台线程访问 NSManagedObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com