@public //在任何地方都能直接访问对象的成员变量。
@private //只能在当前类的对象方法中直接访问。(@implementation中默认是@private)
@protected //能在当前类和子类的对象方法中直接访问。(@interface中默认就是@protected)
@package:只要处在同一个框架中,就能直接访问对象的成员变量。
@interface中:
@property:可以自动生成某个成员变量的setter和getter声明。
@property int age;相当于:
- (void)setAge:(int)height;
- (int)age; 这两句。
但是@property;生成的set类是 - (void)set_Age:(int )height;
所以我们在main方法里应该调用set_age方法。
@implementation中:
@synthesize自动生成age和setter和getter实现,并且会访问_age这个成员变量。
@synthesize age = _age;
版本更新以后xcode只用@property int age就可以完成:
(1)对age的get set 声明。
(2)生成_age成员变量。 默认为@private
(3)对age的get set 实现。
这3件事。
注意:@synthesize age; //默认会访问age这个成员变量。
手动实现
若手动实现了getter方法,编译器就会自动生成仍getter方法
若手动实现了getter方法,编译器就会生成setter方法
若同时手动实现了setter和getter方法,编译器就会自动生成能够不存在的成员变量 |