gpt4 book ai didi

ios - 对 NSManagedObject 的属性引用是否不安全?

转载 作者:可可西里 更新时间:2023-11-01 03:38:42 26 4
gpt4 key购买 nike

在书中Learning Core Data for iOS ,作者创建了几个 UIViewControllers,每个都有一个引用 NSManagedObjectID 的属性。

例如,

@interface LocationAtShopViewController : UIViewController   
@property (strong, nonatomic) NSManagedObjectID *selectedObjectID;
// ... other properties and methods
@end

以这种方式,他能够将 NSManagedObjectID 从一个 Controller 传递到另一个 Controller ,并使用 NSManagedObjectContext 检索关联的 NSManagedObject 对象existingObjectWithID:error: 方法。

此外,他从未直接设置一个NSManagedObject对象(即使他已经有一个指向它的变量引用),也不他是否保留对 NSManagedObject 对象的引用很长时间(相反,他在他需要的每个方法中检索它)。

通过属性引用直接在 Controller 之间传递 NSManagedObject 是否不安全(即在某些情况下会导致崩溃或导致意外行为),或者只是保留一个在 Controller 上引用它?

例如,

@interface LocationAtShopViewController : UIViewController   
@property (strong, nonatomic) LocationAtShop *locationAtShop;
// ... other properties and methods
@end

假设使用了一个单个、共享的NSManagedObjectContext,因此请忽略在多个上下文之间传递所引起的问题,这通常是不安全的。

最佳答案

没有理由避免直接使用托管对象,前提是:

  • 您仅将托管对象与单个托管对象上下文一起使用,并且
  • 你要么
    • 仅在单个线程或队列上使用托管对象,或者
    • 确保在处理不同队列时使用 performBlockperformBlockAndWait

只保留对象 ID 可能不太容易出错,因为它使得意外混淆上下文或队列变得更加困难。对于经验不足的开发人员来说,这可能是一个更好的主意,因此他们不太可能把事情搞砸。但保留对象本身当然没有错,甚至特别危险。

关于ios - 对 NSManagedObject 的属性引用是否不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670311/

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