/** 点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时, 编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法, 如果没有set和get方法,则不能使用点语法。 点语法本质 就是set或者get方法. 1.遇见 s.age = 10;形式,会自动展开为:[s setAge:10]; 2.遇见 int a = s.age;形式,会自动展开为:int a = [s age]; 点语法注意事项: 1.用在set方法中: - (void)setAge:(int)age { _age = age; self->_age = age; self.age = age;// 死循环会展开为:[self setAge:age]; } 2.在get方法中: - (int)age { return _age; return self->_age; return self.age;// 死循环会展开为:[self age]; } 注意点:什么时候会生成set方法什么时候会生成get方法? 如果有赋值运算符,生成set方法,否则,生成get方法. 3)OC点语法的本质是方法调用,不是直接访问成员变量。至于这个点语法代表的是get方法还是 set方法,那就取决于你是取值还是设值(也可以理解为点语法是在“=”的左侧还是右侧。左侧:如stu.age=....这就是调用set方法,右侧 ... = stu.age这就是调用get方法),取值就是get方法,设值就是set方法。 */ #import <Foundation/Foundation.h> #import "Student.h" int main(int argc, const char * argv[]) { @autoreleasepool { Student *s = [Student new]; // [s setAge11:10]; s.age11 = 10;//跟- (void)setAge11:(int)age的setAge11匹配 // int aAge = [s age]; int aAge = s.age; NSLog(@"%d",aAge); } return 0; }
本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5311128.html,如需转载请自行联系原作者