代码风格:访问财产
可能重复:
Style: Dot notation vs. message notation in Objective-C 2.0代码风格:访问财产
在苹果文档的NSArray它说: “实例方法>” “数”。所以,通常我会写[[NSArray array] count]
。然而,[NSArray array].count
工作得很好......最近我发现UIScreen.mainScreen.bounds
也被接受。 mainScreen
是UIScreen
的分类方法。
任何人都想过要使用哪种风格(以及为什么)?请给出意见。
IMO,点语法意味着一定的被动性;使用它应该不会有明显的副作用。将NSArray的-count
方法作为属性对待也是可以的,尽管它实际上并不是一个属性(如果在创建NSArray时属性已成为语言的一部分,它可能是属性的一部分),但如果someMutableArray.removeLastObject
会冒犯我的敏感性, d可能工作得很好。
但是,关于点符号的一件事情是,您不能将Objective-C的点符号与作业左侧的C点符号混合使用。换句话说,不要尝试这个办法:
myView.bounds.origin.x = 50.
相反,您必须说:
CGRect newBounds = myView.bounds;
newBounds.origin.x = 50;
myView.bounds = newBounds;
为点语法仅仅是调用方法的语法糖。所以[NSArray array].count
是相同的[[NSArray array] count]
,并UIScreen.mainScreen
是相同的[UIScreen mainScreen]
你不应该使用点语法比属性访问的任何其他。对于物业访问,选择是个人风格的问题。
对于像属性一样行为的方法,我认为可以使用点表示法,即使它们没有声明为属性。 NSArray的“count”方法就是一个很好的例子。 NSDictionary的“allKeys”和“allValues”是另外两个。 – Caleb
@Caleb,我可以理解那个意见。我是从苹果支持的官方政策角度发言的。我个人避免使用点语法,所以对我来说这不是一个问题。 –
我不知道苹果在这个问题上有明确的官方声明。你知道吗?正如[Objective-C编程语言](http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocObjectsClasses.html#//apple_ref/doc/uid/TP30001163- CH11-SW17)中,点语法用于访问器,但我不认为这意味着您必须将使用限制为使用@property语法声明的属性。 – Caleb
+1对于一个好问题,但投票关闭,因为它实际上是重复的。更重要的是,重复Q中的答案显着更好。 – Caleb
@Caleb,你说的对,他们是。这个问题应该是第一个来源。 –