四:setter和getter方法
setter和getter方法整体声明和实现虽然后面可以用@property代替,但是在后面的iOS开发中,setter方法或getter方法单独使用的频率比较高,应用比较广泛!
@Interface Person:NSObject { NSString *_name; int _age; Sex _sex; //此处枚举类型,属于基本数据类型,不用加“*” float _height; } @end
一、setter方法就是给属性赋值的方法
书写格式:
1、在类的声明中:- (void) +(set+属性去掉"_",首字母大写) : (数据类型/对象/类) + (属性去掉"_");
注意事项:
(1) setter方法一定是对象方法
(2) 一定没有返回值
(3) 一定以set开头, 并且set后面跟上需要设置的成员变量的名称去掉下划线, 并且首字母大写
(4) 一定有参数, 参数类型一定和需要设置的成员变量的类型一致, 并且参数名称就是成员变量的名称去掉下划线
举例:
- (void) setName: (NSString *)name; - (void)setAge: (int)age; - (void)setSex:(Sex)sex; - (void)setHeight: (float)height;
2、在类的实现中:大括号内可以添加其它内容,但是必须实现 属性 =(去掉"_"的属性)
- (void) setName: (NSString *)name{ _name = name; } - (void)setSex:(Sex)sex{ _sex = sex; }
二、getter方法就是获取成员变量值得方法
书写格式:
1、类的声明中 :- (数据类型/对象/类)+(属性去掉“_”)
注意事项:
(1) getter方法一定是对象方法
(2)一定有返回值, 而且返回值一定和获取的成员变量的类型一致
(3)方法名称就是获取的成员变量的名称去掉下划线
(4) 一定没有参数
举例:
- (NSString *)name;
- (int)age;
- (Sex)sex;
- (float)height;
2、类的实现中:在类的实现中可以添加其它内容,但是必须有 return + 属性
- (NSString *)name{ return _name; } - (Sex)sex{ return _sex; }
三、其它应用:
1、一个属性可以只有getter方法, 没有setter方法, 这种属性我们称之为只读属性
2、一个属性也可以只有setter方法, 没有getter方法, 这种属性我们称之为只写属性
3、如果既有setter方法又有getter方法, 那么这种属性我们称之为可读可写的属性
4、一个属性也可以没有getter和setter, 这种属性我们称之为私有属性
5、setter方法和getter方法的声明和实现可以直接用下面代替(写在类的声明里面)
@property(nonatomic,assin)NSString * name;
@property(nonatomic,assin)Sex sex;