Swift:为什么使用局部常量而不是对象属性?
我开始对斯威夫特感到困惑,但我觉得我错过了一些东西。核心数据XCode中的项目模板创建一个局部常量,以引用对象属性,如下所示。创建常量而不是直接引用属性是否有令人信服的理由Swift:为什么使用局部常量而不是对象属性?,swift,Swift,我开始对斯威夫特感到困惑,但我觉得我错过了一些东西。核心数据XCode中的项目模板创建一个局部常量,以引用对象属性,如下所示。创建常量而不是直接引用属性是否有令人信服的理由 func saveContext () { var error: NSError? = nil let managedObjectContext = self.managedObjectContext if managedObjectContext != nil { if mana
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) {
// error handling, etc...
}
}
}
创建常量而不是直接引用属性是否有令人信服的理由
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) {
// error handling, etc...
}
}
}
三个原因:简洁/清晰,效率,以及安全
使用临时变量代替属性可以减少代码的混乱,更易于阅读
它还避免了对属性访问器的大量多余调用
最后,它更安全。代码检索上下文,然后将其与nil
进行比较。如果使用单独的属性访问,每次可能返回不同的值。考虑:
if self.managedObjectContext != nil {
if self.managedObjectContext.hasChanges && !self.managedObjectContext.save(&error) {
// error handling, etc...
}
}
此代码可以通过检查nil
,但managedObjectContext
属性可能会更改。不应该,随意更改上下文可能会导致其他问题,但如果要检查某个值,最好继续使用该值,而不要引入无意中使用其他值的可能性
创建常量而不是直接引用属性是否有令人信服的理由
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) {
// error handling, etc...
}
}
}
三个原因:简洁/清晰,效率,以及安全
使用临时变量代替属性可以减少代码的混乱,更易于阅读
它还避免了对属性访问器的大量多余调用
最后,它更安全。代码检索上下文,然后将其与nil
进行比较。如果使用单独的属性访问,每次可能返回不同的值。考虑:
if self.managedObjectContext != nil {
if self.managedObjectContext.hasChanges && !self.managedObjectContext.save(&error) {
// error handling, etc...
}
}
此代码可以通过检查nil
,但managedObjectContext
属性可能会更改。不应该,随意更改上下文可能会导致其他问题,但如果要检查某个值,最好继续使用该值,而不要引入无意中使用其他值的可能性
创建常量而不是直接引用属性是否有令人信服的理由
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) {
// error handling, etc...
}
}
}
三个原因:简洁/清晰,效率,以及安全
使用临时变量代替属性可以减少代码的混乱,更易于阅读
它还避免了对属性访问器的大量多余调用
最后,它更安全。代码检索上下文,然后将其与nil
进行比较。如果使用单独的属性访问,每次可能返回不同的值。考虑:
if self.managedObjectContext != nil {
if self.managedObjectContext.hasChanges && !self.managedObjectContext.save(&error) {
// error handling, etc...
}
}
此代码可以通过检查nil
,但managedObjectContext
属性可能会更改。不应该,随意更改上下文可能会导致其他问题,但如果要检查某个值,最好继续使用该值,而不要引入无意中使用其他值的可能性
创建常量而不是直接引用属性是否有令人信服的理由
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) {
// error handling, etc...
}
}
}
三个原因:简洁/清晰,效率,以及安全
使用临时变量代替属性可以减少代码的混乱,更易于阅读
它还避免了对属性访问器的大量多余调用
最后,它更安全。代码检索上下文,然后将其与nil
进行比较。如果使用单独的属性访问,每次可能返回不同的值。考虑:
if self.managedObjectContext != nil {
if self.managedObjectContext.hasChanges && !self.managedObjectContext.save(&error) {
// error handling, etc...
}
}
此代码可以通过检查
nil
,但managedObjectContext
属性可能会更改。不应该,随意更改上下文可能会导致其他问题,但如果要检查某个值,最好继续使用该值,而不要引入无意中使用其他值的可能性。据我所知,这是为了简洁。对象是Swift中的引用类型,而不是值类型,因此它们不会复制到新的内存位置,因此使用managedObjectContext
只是为了不必反复键入self.managedObjectContext
。据我所知,这是为了简洁。对象是Swift中的引用类型,而不是值类型,因此它们不会复制到新的内存位置,因此使用managedObjectContext
只是为了不必反复键入self.managedObjectContext
。据我所知,这是为了简洁。对象是Swift中的引用类型,而不是值类型,因此它们不会复制到新的内存位置,因此使用managedObjectContext
只是为了不必反复键入self.managedObjectContext
。据我所知,这是为了简洁。对象是Swift中的引用类型,而不是值类型,因此它们不会复制到新的内存位置,因此使用managedObjectContext
只是为了不必反复键入self.managedObjectContext
。给定的示例缺乏简洁性-“如果让managedObjectContext=self.managedObjectContext{”本可以节省多余的一行!谢谢,这些都是公平的观点。不过,添加代码行和创建额外的指针似乎确实会让简洁性和效率方面的考虑变得有点过时。就您而言,格式良好的属性应该以一致且线程安全的方式返回。这感觉有点像添加safety net用于格式错误的代码。给定的示例缺乏简洁性-“如果让managedObjectContext=self.managedObjectContext{”将保存一个