点符号与方括号和Objective-C中的转换

rid*_*rid 11 coding-style objective-c

以下哪项是Objective-C的最佳实践?

UITableView* view = (UITableView*) [self view];
[view setSeparatorColor:[UIColor blackColor]];
[view release];
Run Code Online (Sandbox Code Playgroud)

((UITableView*) self.view).separatorColor = [UIColor blackColor];
Run Code Online (Sandbox Code Playgroud)

或者有更好的方式来写这个吗?self.view是一个UIView*.

我问两个因为我有一个奇怪的看起来(可能有一个更好的方法?)并且由于官方文档中的以下文字,这暗示它不仅仅是风格或个人偏好的问题:

另一个优点是编译器在检测到写入只读声明属性的尝试时可以发出错误信号.如果您使用方括号语法来访问变量,那么编译器最好只生成一个未声明的方法警告您调用了一个不存在的setter方法,并且代码在运行时失败.

Sim*_*Lee 12

嗯....点符号最后编译成方括号,但这取决于个人喜好.我个人避免使用点符号,除非我设置/访问标量类型,例如,太容易看下面的内容......

view.step = 2.0;
Run Code Online (Sandbox Code Playgroud)

...而且不知道步骤是标量属性,还是有一个setter方法等.我更喜欢明确并且会使用......

[view setStep:2.0];
Run Code Online (Sandbox Code Playgroud)

但我猜再次个人偏好.

  • 阅读完文章之后,我得到的印象是,为了不使用或使用点符号而非模糊地命名方法和属性更为重要.如果更好地命名,他的大多数例子都会很容易被清除.例如,[obj value]和[obj value]看起来是一样的,但是一个可能只是获取一个实例变量,一个可能是一个做谁知道什么的方法,但是它批评点符号的那种模糊性.清楚地编写代码,它不应该与您使用的内容有关. (6认同)