本帖最后由 翟宇浩 于 2015-9-7 15:36 编辑
// 此处略去Person.h和Person.m文件
#import <Foundation/Foundation.h> #import "Person.h"
int main(int argc, const char * argv[]) { @autoreleasepool {
Person *p = [Person new]; // [p setName:@"李白"]; // [p setAge:10]; //点语法是Xcode的特性,Xcode帮我们做代码替换 //点语法,通过 对象.属性名 //此时(p.age)并不是直接访问实例变量,而是Xcode看到点语法(p.age)后 //帮我们自动替换成 p.age--->替换 [p setAge:18] p.age = 18; p.name = @"杜甫"; // int a = [p age]; // NSString *str = [p name]; int a = p.age; NSString *str = p.name; //注意,此处p.age出现在等号右侧 //实际上,当Xcode看到p.age出现在等号右侧后 //他会帮我们把 p.age --->替换成 [p age]; NSLog(@"\n名字:%@",str); NSLog(@"\n年龄:%d",a);
/*
强调:p.age替换成get方法和set方法,一般取决于p.age出现在等号的左侧还是右侧(是设置值,还是取值) 如果在左侧,是设置值 在右侧是取值 也要根据出现的语境判断替换类型 比如: NSLog (@"%d",p.age); 此时替换的是get方法
注意事项:
oc中得self不能用在如下情况,否则会造成无限循环 -(void)setAge:(int)NewAge{ self.age = NewAge; } 即相当于: -(void)setAge:(int)newAge{ [self setAge:newAge]; }
在get方法中,return self.age,相当于 [self age]; 同样是无限循环
点语法的本事是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开相应的方法。切记点语法的本质是转换成set和get方法,如果没有set和get方法,则不能使用点语法。
*/ } return 0; }
|