Objective c 是否将声明捆绑到一个语句中?

Objective c 是否将声明捆绑到一个语句中?,objective-c,coding-style,Objective C,Coding Style,给出下面的Objective-C示例,是保留单独的语句还是将它们合并成一个语句,这仅仅是一个风格和易于阅读的问题?这两种方法都有实际的好处吗?声明单个变量是否浪费内存 NSDictionary *theDict = [anObject methodToCreateDictionary]; NSArray *theValues = [theDict allValues]; NSString *theResult = [theArray componentsJoinedByString:@" "];

给出下面的Objective-C示例,是保留单独的语句还是将它们合并成一个语句,这仅仅是一个风格和易于阅读的问题?这两种方法都有实际的好处吗?声明单个变量是否浪费内存

NSDictionary *theDict = [anObject methodToCreateDictionary];
NSArray *theValues = [theDict allValues];
NSString *theResult = [theArray componentsJoinedByString:@" "];


当我声明一个单独的变量时,我会考虑以下因素:

  • 如果我想在调试器中看到它的值
  • 如果我多次访问变量
  • 如果线路太长

但是,这两种方法在实际操作上没有区别。

此外,您还没有直接询问过这一点,但请注意,当您使用点符号访问对象时,例如:

myObject.myObjectProperty1.myObjectProperty1Property; 
如果要多次访问
myObjectPropertyProperty
,建议将其指定给局部命名变量。如果不这样做,则会多次执行查找


现在我再怎么强调也不为过,在很多情况下,如果不是大多数的话,这节省的时间是如此之小,以至于让人严重质疑是否值得花时间为任务做额外的打字!那我为什么要提这个?因为已经说过了——除了风格上的“分析”(我刚刚编了一个新词)——如果您正在编写的代码部分是在一个紧密的循环中运行的,那么就值得格外小心。例如,在编写填充包含大量单元格的UICollectionView中的单元格的代码时。此外,如果您使用的是核心数据,并且使用点表示法引用NSManagedObject属性,那么每次查找都会产生更大的开销,在这种情况下,花时间分配“嵌套”引用的任何值肯定更值得点表示法首先调用局部变量。

感谢您的贡献。我明白你的意思,但我想知道,在这样的情况下,花时间给局部变量赋值(带点符号或不带点符号)不是一回事吗?不,因为在objective C中,ivar是通过对象消息来访问的。您可以定义任何iVar访问方法来包含您喜欢的任何功能,而编译器事先不知道您是否需要运行您的方法,因此在objective c中,点表示法对应于嵌套的方法调用,并为每个点触发iVar访问方法。对于任何给定的代码,点越少,触发的消息就越少。有人推测,对于某些代码模式,理论上,编译器可以对其进行优化。实际上,不管出于什么原因,似乎都不是。谢谢你的澄清。
myObject.myObjectProperty1.myObjectProperty1Property;