我看了核心数据指南,有两种获取新的NSManagedObject实例的方法。
两种方法之间有什么区别吗?或者,对于在任何情况下获取新的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/