点语法
如果学过java或者C#的话,对“.”应该很熟悉,
比如一个Fruit类里面有一个成员变量color,要给这个成员变量赋值
Fruit f = new Fruit();
f.color="red";
然而在oc中,f.color可绝不是这个意思
我们来看一段代码
#import <Foundation/Foundation.h>
#import "Fruit.h"
@implementation Fruit
- (void)printColor{
NSLog(@"%@",_color);
}
- (void)setColor:(NSString *)color{
_color=color;
}
- (NSString *)color{
return _color;
}
@end
int main(int argc, const char * argv[]) {
NSString *color=@"the color is red";
Fruit *f=[Fruit new];
//'.'相当于set方法
f.color=color; //这一句相当于: [f setColor:color];
//和java中的语法是不一样的,并不是访问成员变量,而是是调用setColor方法
[f printColor];
//'.'相当于get方法
NSString *s=f.color;
NSLog(@"再输出一次:%@",s);
return 0;
}
出结果为:
the color is red
再输出一次:the color is red
“`
上述代码中的成员变量名是_color,f.color明显不是访问成员变量_color。它的作用相当于[f setColor:color],调用了set方法
点语法的含义及用法
OC中的点语法相当于调用set方法进行赋值
比如,f.age=10;
调用过程是,寻找名称为setAge的对象方法,参数为10。(就是将age的第一个字母大写,加上set前缀)