iOS底层学习-day-25
前言-OC-内存管理篇
我是一名iOS开发者, iOS底层 菜鸟的进阶之路30天。
copy关键字
- 拷贝的目的
- 产生一个副本对象,跟源对象互不影响
- 修改了源对象,不会影响副本对象
- 修改了副本对象,不会影响源对象
- iOS提供了2个拷贝方法
- copy,不可变拷贝,产生不可变副本
- mutableCopy,可变拷贝,产生可变副本
- 例子1:
- copy,不可变拷贝,产生不可变副本
NSString *str1 = [NSString stringWithFormat:@"test”];//str1不管是NSMutableString,还是NSString都一样
// 浅拷贝,指针拷贝,没有产生新对象
NSString *str2 = [str1 copy]; // 返回的是NSString
// 深拷贝,内容拷贝,有产生新对象
NSMutableString *str3 = [str1 mutableCopy]; // 返回的是NSMutableString
- 深拷贝和浅拷贝
- 浅拷贝:指针拷贝,没有产生新的对象
- 深拷贝:内容拷贝,产生新的对象
- 例子2:
NSMutableString *str1 = [[NSMutableString alloc] initWithFormat:@"test"];
NSString *str2 = [str1 copy]; // 深拷贝 但是不可以修改里面的内容
NSMutableString *str3 = [str1 mutableCopy]; // 深拷贝