Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @interface Person : NSObject
- /*
- {
- @public
- int _age;
- int age;
- }
- */
- /*
- 从Xcode4.4以后apple对@property进行了一个增强, 以后只要利用一个@property就可以同时生成setter/getter方法的声明和实现
- 没有告诉@property要将传入的参数赋值给谁, 默认@property会将传入的属性赋值给_开头的成员变量
- @property有一个弊端: 它只会生成最简单的getter/setter方法的声明和实现, 并不会对传入的数据进行过滤
- 如果想对传入的数据进行过滤, 那么我们就必须重写getter/setter方法
- 如果不想对传入的数据进行过滤, 仅仅是提供一个方法给外界操作成员变量, 那么就可以使用@property
- 如果利用@property来生成getter/setter方法, 那么我们可以不写成员变量, 系统会自动给我们生成一个_开头的成员变量
- 注意: @property自动帮我们生成的成员变量是一个私有的成员变量, 也就是说是在.m文件中生成的, 而不是在.h文件中生成的
- */
- // age? _age;
- /*
- - (void)setAge:(int)age;
- - (int)age;
- */
- @property int age;
- @end
- @implementation Person
- /*
- - (void)setAge:(int)age
- {
- _age = age;
- }
- - (int)age
- {
- return _age;
- }
- */
- // 如果重写了setter方法, 那么property就只会生成getter方法
- // 如果重写了getter方法, 那么property就只会生成setter方法
- // 如果同时重写了getter/setter方法, 那么property就不会自动帮我们生成私有的成员变量
- - (void)setAge:(int)age
- {
- if (age < 0) {
- age = 0;
- }
- _age = age;
- }
- //- (int)age
- //{
- // return _age;
- //}
- @end
- @interface Person : NSObject
- /*
- 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性
- 如果只提供了getter方法, 那么我们称这个属性为只读属性
- 如果只提供了setter方法, 那么我们称这个属性为只写属性
- 如果既没有提供getter也没有提供setter方法, 那么我们称这个属性为私有属性
- 格式:
- @property(属性修饰符) 数据类型 变量名称;
- */
- // readwrite: 代表既生成getter方法 , 也生成setter方法
- // 默认情况下 @property就是readwrite的
- @property(readwrite) int age;
- /*
- - (void)setHeight:(double)height;
- - (double)height;
- - (void)setHeight:(double)height;
- - (double)abc;
- */
- @property(getter=abc) double height;
- /*
- - (void)setWeight:(double)weight;
- - (void)tiZhong:(double)weight;
- */
- @property(setter=tiZhong:) double weight;
- // readonly: 代表只生成getter方法不生成setter方法
- @property(readonly) NSString * name;
- // 是否已婚
- // 程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值, 我们都会将获取的方法名称改为isXXX
- @property(getter=isMarried) BOOL married;
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement