黑马程序员技术交流社区
标题: 点语法的使用 [打印本页]
作者: 翟宇浩 时间: 2015-9-7 15:32
标题: 点语法的使用
本帖最后由 翟宇浩 于 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;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |