拷贝&isEqual&NSString的三种创建方式

拷贝

浅拷贝:不可变对象的不可变拷贝是浅拷贝,别的都是深拷贝(单层深拷贝)。
本来准备写的,但是之前的归档解档方法失效了。

isEqual、isEqualToString和等号

  • isEqual: 判断两个对象的等同性,首先判断两个对象的地址是否相同,再判断类型是否一致, 然后再判断对象的具体内容是否一致

  • isEqualToString: 直接判断字符串内容是否相等

  • ==: 对于基本数据类型, ==运算符比较的是值; 对于对象类型, ==运算符比较的是对象的地址是否相同

NSString的三种创建

直接创建 stringWithString、StringWithFormat

  • 在OC中stringWithFormat会新申请一片空间并初始化字符串,所以每一个用stringWithFormat方法得到的字符串其指针都是不相同的但是内容相同时,地址又是相同的; (但是这样觉得是因为我测试的时候用的字符串,创建的字符串的长度都较短,所以是taggedPointer类型,taggedPointer类型的变量并不符合这种情况,当不是taggedPointer类型的变量时,就是上文中的结果——每个都不一样)。
  • 而stringWithString是通过浅拷贝的方式得到字符串的,浅拷贝只拷贝指针不拷贝对象,所以其指针是相等的,内容也相等;
  • 快速初始化是首先根据一定的方法(此方法和NSSet(集合)中的存放对象的方法一样都是hash算法)在内存中查找是否已经存在了这样的一个对象,若是存在则放回此对象的指针,若不存在,则根据一定的方法找到一片内存空间存放对象,并返回指针。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值