博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
copy strong weak assign的区别
阅读量:6471 次
发布时间:2019-06-23

本文共 879 字,大约阅读时间需要 2 分钟。

## copy copy用来修饰对象,而且能使用copy这个属性的修饰的对象,必须遵守了NSCopying协议,并实现了- (id)copyWithZone:(nullable NSZone *)zone方法,默认NSString/NSArray/NSDictionary还有他们对应可变的类型,都实现了这个方法,所以我们可以直接使用点属性来copy或者mutablecopy,这也是为什么其他的对象(如UIView和它的子类等)我们用copy属性修饰就会崩溃,还会提示我们(
[UIImageView copyWithZone:]: unrecognized selector sent to instance 0x7ff690c1c7c0)
对于不可变的对象copy 是地址的复制/mutablecopy是内容的拷贝,会产生一个新的对象!

NSString *string1 = [NSString stringWithFormat:@"好好的"];NSString *string2 = string1.copy;NSLog(@"%p-----%p",string1,string2);// 0x7f829ad27880-----0x7f829ad27880 地址一样NSString *string3 = string1.mutableCopy;NSLog(@"%p",string3);// 0x7f8798717bf0复制代码

strong和weak

1.strong用来修饰对象,表示强引用,修饰的对象引用计数+1 2.weak同样用来修饰对象,表示弱引用,修饰的对象引用计数不变, 只有当一个对象不再有strong类型的指针指向它的时候,不管有多少个weak指针指向它,它都会被释放,并且会把所有weak修饰的属性置nil,weak主要是用来解决循环引用导致的双方都释放不了的问题

##assign assign用来修饰基本数据类型(NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)

转载地址:http://iovko.baihongyu.com/

你可能感兴趣的文章
真强大,可算又找到了
查看>>
SQL Server 2008 R2英文版安装图解
查看>>
Windows Azure Affinity Groups (3) 修改虚拟网络地缘组(Affinity Group)的配置
查看>>
Azure ARM (21) Azure订阅的两种管理模式
查看>>
HTML Entity Sets - All
查看>>
前缀式与后缀式
查看>>
QTP基本脚本设计(第一部分)
查看>>
Java之观察者模式
查看>>
VBS生成随机的16进制的密码
查看>>
MSIL条件跳转(简单注释)
查看>>
linux下shellcode提取常用到的命令
查看>>
hibernate的3种状态
查看>>
求两个链表是否相交总结
查看>>
大话商业智能
查看>>
Eclipse下python插件(pydev)的安装
查看>>
python命名规范
查看>>
ems server
查看>>
监控打印机
查看>>
[Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁...
查看>>
android滤镜效果
查看>>