我已经阅读了Marcus S. Zarra的Core Data: Data Storage and Management for iOS, OS X, and iCloud(第2版)中与iOS相关的章节,以获得极大的好处。不过,我想知道一个方面,这本书暗示了一种与我自己不同的风格。
本书的示例访问NSManagedObject
s'利用KVC(例如[recipe valueForKey: @"name"]
)的属性和关系。 (仅)有两个简短的解释,说明如何定义属性访问器(例如在recipe.name
中使用)。这似乎意味着KVC明确建议有利于财产存取者。
我通常喜欢属性访问者,例如因为它们可以防止由拼写错误引起的错误(例如[recipe valueForKey: @"nam"]
),因为Xcode可以为我生成源代码(Editor
| Create NSManagedObject Subclass
)。
我的问题是:是否存在技术原因导致为什么人们应该使用KVC而不是属性访问者风格呢?
答案 0 :(得分:3)
KVC非常有用,本书强调KVC的使用,因为坦率地说,在我看来,iOS开发并没有强调足够。理解KVC是iOS开发人员工具包中非常有用的工具,不幸的是,它的教学已被搁置。
话虽如此,出于你所说的原因,你应该使用属性访问者。它们确实在编译时捕获错误而不是运行时间,并且速度很快。
当您对集合进行操作时,KVC非常有用,并且在动态情况下或在您不必知道您正在使用的对象的情况下非常有用。这些是点语法失败相当可怕的领域。 Dot语法不适用于id
,在我看来,它是Objective-C开发的基石。
在任何情况下,都没有理由不使用属性访问器,我通常在我的生产代码中使用它们。
最后一点:我不使用Xcode的代码生成。它有足够的缺陷,我建议人们使用mogenerator。您将获得更好的结果和更易于维护的代码库。