我看了核心数据指南,有两种获取新的NSManagedObject实例的方法。

  • -NSManagedObject类
  • 的initWithEntity:insertIntoManagedObjectContext:
  • + NSEntityDescription类
  • 的insertnewObjectForEntityForName:inManagedObjectContext:

    两种方法之间有什么区别吗?或者,对于在任何情况下获取新的NSManagedObject而言,它们的含义相同。

    最佳答案

    根据文档中的说明,通过使用NSEntityDescription中的类方法实例化NSManagedObject,可以在不声明/导入其 header 的情况下执行此操作。通过设置类的名称,您将获得对象的“完全配置的实例”。
    当事情不断变化时,它在开发的早期阶段很有用,但它可能是一个风险因素,因为如果您拼写了错误的类名,则不会收到任何编译错误或警告,因为它是一个字符串。NSManagedObject中的方法需要将特定类的接口(interface)导入到文件中,并使其对错误更加健壮,因为编译器可以检查该类是否存在。
    例如,它们将具有相同的结果,它们将返回指定类的实例。尽管保留数会有所不同:- initWithEntity:insertIntoManagedObjectContext:(保留计数== +1)+ insertnewObjectForEntityForName:inManagedObjectContext:(保留计数== 0)
    这是文档
    NSEntityDescription Class Reference(insertNewObjectForEntityForName:inManagedObjectContext:)

    NSManagedObject Class Reference(initWithEntity:insertIntoManagedObjectContext:)

    关于iphone - 关于获取新的NSManagedObject对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3757147/

    10-13 03:48