Dar*_*iss 5 objective-c ios ios5
我正在深入研究iOS编程,而我很难理解Dot Notation和Method Notation.
据我所知,Dot Notation可用于在属性上调用setter/getter,并且写入/读取更清晰.方法表示法用于向对象发送消息以操纵它们等.
有人可以给我一个简单的解释,为什么以下两个语句本质上是不同的,一个将编译,但另一个将由于语法错误而失败.
- (IBAction)digitPressed:(UIButton *)sender
{
NSString *digit = [sender currentTitle];
self.display.text = [self.display.text stringByAppendingFormat:digit];
self.display.text = self.display.text.stringByAppendingFormat:digit;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
jam*_*ack 12
您正在使用新语法使用旧语法的有趣时间进入Objective-C开发.Dot语法是语法糖,在某些情况下你可以使用它,但你不应该.
以下是无效的语法.你使用冒号的任何东西(除了setter或getter),你都不会使用点符号.
self.display.text = self.display.text.stringByAppendingFormat:digit;
Run Code Online (Sandbox Code Playgroud)
另外,你会使用stringByAppendingString,而不是stringByAppendingFormat
您使用点表示法来访问变量,而不是用于调用具有效果的操作.
正确:
self.foo.attributeOfMyClass
不正确:
self.foo.downloadSomethingFromAWebsite
确保你总是使用点表示法来访问属性值和你总是使用括号标记(即使你不必须)调用操作方法,你的代码将在一目了然更加清晰.
点符号只是一种特定方法的简写 - 即访问者.您可以在以下情况下使用它:
foo.bar = 3;相当于[foo setBar:3];.foo.bar均相当于[foo bar].点符号只是速记 - 它与属性的关系没有任何魔力.理论上你可以使用点符号来发送任何不带参数的消息(foo.doSomething),但这样的风格非常非常糟糕,因为点符号用于属性.另请注意,如果点符号与方括号在您学习时让您感到困惑,那么完全避免使用点符号是完全有效的选择.如果您愿意,它只是您可以用于访问者的一种捷径.
| 归档时间: |
|
| 查看次数: |
4125 次 |
| 最近记录: |