方法调用之间的区别是什么:
time.text = s;
[time setText:s];
如果有的话?
https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/JumpRightIn/iPhone101/Articles/06_ImplementingController.html的教程同时使用:
- (IBAction)changeGreeting:(id)sender {
self.userName = self.textField.text;
NSString *nameString = self.userName;
if ([nameString length] == 0) {
nameString = @"World";
}
NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
self.label.text = greeting;
}
什么时候用什么?
如果重要,我相对于Objective-C很新。
答案 0 :(得分:3)
AFAIK他们都是一样......
time.text = s;
在内部执行... [time setText:s];
较早的只是点符号,有些人发现它更容易使用,并且在其他语言中非常普遍。
编辑:
要添加的另一件事是我只是指这里的属性,因为只有他们有吸气剂和制定者。方法调用是一个不同的东西,因为你可以传递更多的参数。
答案 1 :(得分:3)
其他答案有一些优点,但也有一些困惑。这是我的看法:
括号表示法是发送消息/调用方法的一般语法。
有各种不同的方法。一种特殊的方法是访问器 - 属性的setter和getter。
点语法是调用访问器的另一种形式。它是一种更新的风格,在过去几年中刚刚添加到语言中。使用它纯粹是可选的,如果你发现它更清晰,更简洁。区别在于纯粹的装饰性。使用点语法与调用访问器(getter或setter)相同,具体取决于在较大表达式中如何使用子表达式。
答案 2 :(得分:0)
点语法(time.text = s
)是属性设置器和getter使用的特殊情况。如果使用@property
关键字声明属性,然后使用@synthesize
setter和getter声明属性,或者声明使用@dynamic
独立生成setter和getter,则可以使用点访问setter和getter语法。
例如,在我的接口文件中,我声明了一个属性myInt:
@property (readwrite, assign) int myInt;
在该声明中readwrite
表示我想要一个getter和一个setter,assign
表示我希望将值分配给myInt
而不是保留或复制。然后在我的界面中写道:
@synthesize myInt;
我现在有一个名为myInt
的属性,我可以使用self.myInt
进行访问,并使用self.myInt = ...
进行设置。
使用方括号如[nameString length]
是在Objective-C中调用对象上的方法的标准方法,也适用于生成的属性([self myInt]
)。点语法只是属性的快捷方式。