oc学习之属性
来源:互联网 发布:鼎金网络投教中心 编辑:程序博客网 时间:2024/04/24 21:01
属性:对实例变量的一种封装,会自动生成访问器的方法
格式:
@property (参数1,参数2,参数3...)属性的类型属性名;
属性的参数
(1)和读写有关:
readwrite:可读可写,默认情况,可省略。自动生成setter、getter方法。
readonly:只读。只自动生成getter方法。不希望外界改变属性值的时候用只读。
(2)和线程有关:
atomic:原子性,默认省略。线程同步,保证了多线程的安全,但是性能比较低。
nonatomic:非原子性,是通常使用的情况。牺牲了线程的安全,提高了效率。
(3)和内存有关:
assign:系统自动分配内存,进行管理,适用于基本数据类型(int、double、...、BOOL、结构体变量、枚举变量 等),基本数据类型不用管理内存。
copy:适用于字符串NSString以及字符串的子类。
strong:强指针(强引用)。其存亡决定了所指向的对象的存亡。只要有用strong修饰的的指针指向某个对象,该对 象就不会被系 统自动释放。一旦没有strong修饰的的指 针指向某个对象,该对象就会被系统自动释放。
大部分情况下,除了NSString及其子类以及用weak修饰的以外的对象,都用strong修饰。
weak:弱指针(弱引用)。其存亡依附于所指的对象,只要它所指向的对象没有强指针,那么该对象就会被释放。 同时,指向该对象的所有弱指针都会被清除。
1⃣️通过拖拽添加的控件连线作为属性时,会自动使用weak。2⃣️代理的对象用weak修饰。
(4)指定访问器的方法名称
setter=新方法名:为设置器的方法取新名字
getter=新方法名:为获取器的方法取新名字
用代码表达:
在类的头文件(.h文件)中:
@property (readwrite,nonatomic,assign)int num;
@property (nonatomic,copy,setter=setStuName:,getter=getName)NSString *name;
在类的源文件(.m文件)中:
要合成属性:
@synthesize name, num=_num; // num=_num;表示为num取了个新的名字为_num
//此时,系统就会自动生成访问器的方法,我们就不需要手动实现
//测试一下,现在就可以直接输出name了
-(void)test{
NSLog(@"%@",name);
}
在这里讲一下构造方法:
1.初始化的构造方法,该方法必须以init开头
-(instancetype)initWithNum:(int)tNum andName:(NSString *)tName;
2.便利构造方法,最好以类名作为开头
+(instancetype)studentWithNum:(int)tNum andName:(NSString *)tName;
实现
-(instancetype)initWithNum:(int)tNum andName:(NSString *)tName{
if(self = [super init]){
self.num = tNum;
self.name = tName;
}
return self;
}
+(instancetype)studentWithNum:(int)tNum andName:(NSString *)tName{
Student *stu = [[Student alloc] initWithNum:tNum andName:tName];
return stu;
}
- oc学习之属性
- oc学习之属性
- OC学习总结之属性
- OC学习之XML属性列表归档
- OC学习之道:关于OC的属性的介绍
- 黑马程序员----OC学习笔记之属性学习
- OC之属性
- OC之属性
- OC 基础之----属性
- OC学习心得之属性
- OC之属性
- OC学习之Runtime之一成员变量和属性
- OC学习之属性关键字以及set和get方法
- OC之属性(笔记)
- OC学习之NSString
- OC学习之NSArray
- OC学习之NSNumber
- OC学习之NSdate
- Cracer渗透测试网络培训第一期
- 早上学了一下java的随机数,下面把代码复制一下
- canvas的save与restore方法的作用
- 树上路径
- 可乐瓶盖问题
- oc学习之属性
- 【LintCode】第k大元素
- uva 1277 Cops and Thieves(完成阻击所需要的最少人数)
- 加密狗原理-高强度加密-程序加密技巧
- 浅谈对梯度下降的理解
- 机器学习中的范数规则化之L0、L1与L2范数
- setTimeout和setInterval亲密关系
- Swift之高德地图的调用
- 2016多校训练Contest10: 1004 Death Sequence hdu5860