<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流!
在java等面向对象的语言中,常常会用到obj.方法,或者用到obj.属性来调用对象的方法和属性。OC为了使使用其他语言的程序设计者更好学习OC,所以OC也引入了点语法,但是从根本上讲,OC的点语法和java等语言的点语法还是有一定区别的,下面我们就来看看怎么使用OC的点语法。
1 @interface Person:NSObject{ 2 @private 3 int age; 4 } 5 6 -(void)setAge:(int)Newage; //声明setter函数 7 -(int)age; //声明getter函数 8 @end 9 10 @implementation Person //实现setter和getter函数 11 -(void)setAge:(int)Newage{ 12 age = Newage; 13 } 14 15 -(int)age{ 16 return age; 17 } 18 int main(int argc, const char * argv[]) { 19 Person * xiaoming = [Person alloc]; 20 21 xiaoming.age = 21; //通过点语法为字段age赋值 22 NSLog(@"%d",xiaoming.age); //通过点语法取得字段age的值 23 24 return 0; 25 }
上面的代码中,xiaoming.age实际上是调用了一个函数[xiaoming setAge];而下面将xiaoming.age打印出来则是调用了[xiaoming age];所以问题的实质就是在使用点语法为一个字段赋值或者调取一个字段的时候,系统会自动调用这个字段对应的setter和getter函数,这个字段对应的setter 和getter 函数是这样的,假如咱们的字段名为age,则对应的getter 和 setter函数的形式为:
-(int)setAge:(int)Newage;
-(int)age;
除了我们自己声明和实现setter 或者getter函数,我们也可以以让编译器来为我们实现这两个函数,来看代码
1 @interface Person:NSObject{ 2 @private 3 int age; 4 } 5 @property int age; //编译器自动声明age对应的getter 函数和setter 函数 6 @end 7 8 @implementation Person 9 @synthesize age; //编译器自动实现age对应的getter 和setter 函数 10 @end 11 int main(int argc, const char * argv[]) { 12 Person * xiaoming = [Person alloc]; 13 14 xiaoming.age = 21; 15 16 NSLog(@"%d",xiaoming.age); 17 18 return 0; 19 }
在这段代码的第五行的语句就告诉编译器,你给我声明age对应的getter 函数和setter 函数,第九行的语句就告诉编译器你给我实现age对应的getter 和setter 函数,这样我们就不必自己去写字段对应的setter 和getter函数,当然了,你也可以自己在下面重新复写setter 或者getter 函数,添加你想添加的内容。
备注:欢迎大家指出博客中存在的不足或者错误,我的QQ号码是993371649.