setter方法 、getter方法、点语法、@property
来源:互联网 发布:javascript解析json 编辑:程序博客网 时间:2024/06/05 06:34
setter方法和getter方法
由于我们经常定义一些方法来操作成员变量,所以就有了getter和setter方法
setter方法
- 作用:设置成员变量的值
- 命名规则:
-(void) set变量名(首字母大写):(成员变量类型)形参名;
getter方法
- 作用:获取成员变量的值
- 命名规则
-(成员变量类型)成员变量名;
@interface Student : NSObject{ NSString *_name;}//setter方法声明-(void)setName:(NSString*)name;//getter方法声明-(NSString *)name;@end@implementation Student//setter方法实现-(void)setName:(NSString*)name{ _name = name;}//getter方法实现-(NSString *)name{ return _name;}@endint main(int argc, const char * argv[]) { Student *stu = [[Student alloc]init]; //setter方法 [stu setName:@"ABCD"]; //getter方法 NSLog(@"name:%@",[stu name]); return 0;}
点语法
int main(int argc, const char * argv[]) { Student *stu = [[Student alloc]init]; stu.name = @"ABCD"; NSLog(@"name:%@",stu.name); return 0;}
- 如果系统提供了getter 和setter方法,那么访问属性就多了一种方式,称为点语法。
- 点语法的本质是调用了getter和setter方法
- 点语法是一个编译器的特性,会在程序编译成二进制的时候将点语法自动转化为setter和getter方法。
- 如果点语法在等号左边,那么编译器会自动转换为setter方法
- 如果点语法在等号右边或没有等号,那么编译器会自动转化为getter方法
- 点语法一般用于给成员变量赋值,如果不是给成员变量赋值一般情况下不建议使用。
@property
@interface Student : NSObject@property NSString *name;@end@implementation Student@endint main(int argc, const char * argv[]) { Student *stu = [[Student alloc]init]; stu.name = @"ABCD"; NSLog(@"name:%@",stu.name); return 0;}
- @property是一个编译器指令, 会在程序编译时转换为setter方法和getter方法的声明
//setter方法声明-(void)setName:(NSString*)name;//getter方法声明-(NSString *)name;
- @synthesize是一个编译器指令, 会在程序编译时转换为setter方法和getter方法的实现
//setter方法实现-(void)setName:(NSString*)name{ _name = name;}//getter方法实现-(NSString *)name{ return _name;}
注意
- 在Xcode4.5及以后的版本中,可以省略@synthesize,直接写@property就可以,这样Xcode会自动生成完整的setter方法和getter方法的实现
- 如果想对传入的参数进行过滤,那么就必须重写getter方法和setter方法,或者重写其中的一个,不管重写哪一个,@property都会生成剩下的那一个
- 如果利用@property来生成getter方法和setter方法,可以不写成员变量,系统会自动生成一个_开头的成员变量。
- 如果同时重写了getter方法和setter方法,那么@property就不会自动生成私有的成员变量
property修饰符
- readonly: 只会生成getter方法
- readwrite:既会生成getter也会生成setter方法,默认什么不写就是readwrite
- getter:可以给生成的getter方法起一个名字
- setter:可以给生成的setter方法起一个名字
@interface Student : NSObject@property (readonly) NSString *name;@property (readwrite) int age;;@property (getter=isRight) BOOL right;@property (setter=tizhong:) double weight;@end
0 0
- setter方法 、getter方法、点语法、@property
- getter-setter方法/点语法
- @property简化setter、getter方法
- 二、oc中的setter与getter方法以及点语法
- OC - @property与setter,getter方法
- property 定义 getter 跟 setter 方法
- property属性的setter、getter方法
- OC-快速调用对象的setter和getter方法----点语法
- getter和setter方法
- setter-getter方法
- setter和getter方法
- setter和getter方法
- swift getter setter方法
- setter getter方法
- getter和setter方法
- getter和setter方法
- OC基础语法学习3:setter/getter 点语法 @property @synthesize
- setter方法和getter方法
- Detect walls in the map created by gmapping
- Realm初探(一)
- cookies ,localstorage和sessionstorage对比
- HDFS——如何将文件从HDFS复制到本地
- laravel 5.4 运行 make:auth 报错
- setter方法 、getter方法、点语法、@property
- Linux 指定运行时动态库路径
- 在kernel space调用系统调用的例子
- DB2常用函数一:(字符串)详解
- Android Modbus的实现--Modbus4Android
- Android6.0 移除电池设置
- 关于const的一点个人总结 C++
- IOC容器类对象
- 深入了解startActivity启动流程