IOS/OC 记录四 属性,点语法
属性:
属性是一对(setter/getter)方法;
.h
@property 开头 属性的声明
.m
@synthesize 开头 属性的实现
属性的特性:
作用:改变属性生成的setter/getter的内部实现
//记录
.h
//为了解决每添加一个实例变量都要添加一对方法的麻烦
//苹果引入了属性的概念,一个属性就代表一对方法(setter/getter).
//属性分为声明和实现
//属性的声明在.h中
//属性的写法:
//@property 类型 属性名;
//产生方法的规则:
// - (void)setName:(NSString *) name; //属性名不能加_,加_的是实例变量名;
//属性的特性,在@property后加(),在()里写特性,特性和特性之间用,号隔开;
//作用:改变属性生成的setter/getter的内部实现
//1.读写特性
//readwrite 可读可写(系统默认的)
//readonly 只读
//2.原子特性(线程安全)
//atomic 能保证线程安全(加锁)(默认的)
//nonatomic 不能保证线程安全 比较推荐这种:出错很少,不浪费系统资源
//3.语义特性(内存特性)
// assign 完全不用考虑内存问题 (用于基本数据类型)
// retain 对对象类型管理内存(适用于所有的对象类型)(带 * 号的是对象类型)
// copy 对实现<NSCopying>协议的对象可以使用copy
//
//总结:只要是对象类型都必须使用retain/copy
//字符串类型(NSString)建议使用copy
@property(nonatomic,copy) NSString * name;
.m
//属性的实现:
//1.指定一个实例变量,如果.h里没有提前创建好实例变量,系统会替你创建
//2.实现所有相应的setter/getter方法
@synthesize name = _name;
main.m
[stu setName:@"呵呵"];
NSLog(@"%@",[stu name]);
//OC中点语法 调用setter/getter方法
stu.name = @"an";//赋值的时候 系统调用setter
NSString * s = stu.name; //取值的时候 调用getter
NSLog(@"%@",s);
//作业
7.1作业一
创建一个Fraction(分数)类实现分数的加减乘除,比较大小、约分等方法。
7.2作业二
创建2个类,为这个两个类添加属性,自己实现setter、getter,要求根据assign、retain、copy的不同,写出不同的setter、getter方法。
本文出自 “学员园” 博客,谢绝转载!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。