自学的一天 看了几集视频 觉得是和java对比着讲得 挺好.
-(void)setAge:(int)age;
-(void)setAge;
不是同一个方法 证明 " : " 也是方法名的一部分
在静态方法里用self 就是指类名
[[[student alloc] init] autorelease]
自动释放
stringWhithFormat 自动释放
teacher . name = 10 和 [teacher setName:10]等价
[t setName:@"safda" ];
NSLog(@"%@",[t name]);
t.name = @"dsgfafa";
NSLog(@"%@",[t name]);
2013-08-03 11:25:35.254 Object_C[605:303] safda
2013-08-03 11:25:35.256 Object_C[605:303] dsgfafa
NSString * tp = t.name; 和NSString * tp = [t name ];等价
t.name = @"dsgfafa";
NSLog(@"%@",[t name]);
NSString * tp = t.name;
NSLog(@"%@",tp);
点语法的本质还是方法调用.
为了防止点语法照成的访问属性的假象 所以一般创建变量前加"_"
@synthesize age = _age; 代表setter和getter去访问这个成员变量
对于Synthesize 来说 它有两个功能
1 根据后缀名 实现这个变量的setter 和getter方法
2 如果 .h文件 有property 声明一个类型的属性
.m文件有synthesize 这个属性 且名称一致
那么在.h文件中就可以省略这个属性的命名
但是创建的是一个私有的变量(类型和property一致)
( 注: 经本人实测 此方法只能在64位中实现 32位会报错)
总结一下今天的学习:
点语法: 和java中不同的是 OC中的点语法有两种用法,是左式 就是赋值功能(setter) 右式是取值功能(getter)
@synthesize 和 @property