黑马程序员——IOS基础——Copy
来源:互联网 发布:哪个剪辑软件最快 编辑:程序博客网 时间:2024/04/30 01:06
------- android培训、java培训、期待与您交流!
------- android培训、java培训、期待与您交流!
1⃣️一个对象使用copy或mutableCopy方法可以创建对象的副本
2⃣️copy - 需要先实现NSCoppying协议,创建的是不可变副本(如:NSString、NSArray、NSDictionary)
3⃣️mutableCopy - 需要先实现NSMutableCopying协议,创建的是可变副本(如:NSMutableString、NSMutableArray、NSMutableDictionary)
4⃣️深复制:内容拷贝,源对象和副本指向的是同一个对象。对象的引用计数器+1,其实相当于做了一次retain操作
只有一种情况是浅拷贝:不可变对象调用copy方法,并且浅拷贝情况下copy就相当于retain
#import <Foundation/Foundation.h>#pragma mark 不可变字符串的拷贝(深拷贝)void stringMutablecopy(){//string调用Mutablecopy NSString *string = [[NSString alloc] initWithFormat:@"age is %i",10]; //产生了一个新对象,计数器为1,源对象的计数器不变 //str:1 string:1 NSMutableString *str = [string mutableCopy]; //str和string不是相同对象 NSLog(@"stringMutablecopy:%i",str==string);//返回0 //改变str不会改变string [str appendString:@"abcd"]; NSLog(@"string:%@",string); NSLog(@"str:%@",str);}#pragma mark 不可变字符串的拷贝(浅拷贝)void stringCopy(){//string调用copy //copy产生的是不可变副本,由于源对象本身就是不可变,所以为了性能着想,copy会直接返回源对象本身 //源对象计数器会+1 NSString *string2 = @"age is 10"; NSString *str2 = [string2 copy]; NSLog(@"stringCopy():%i",str2 == string2);}#pragma mark 可变字符串的copy(深拷贝)void mutableStringCopy(){//mutableString调用copy NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i",10]; NSString *str = [string copy]; NSLog(@"mutableStringCopy():%i",str ==string);}#pragma mark 可变字符串的MutableCopy(深拷贝)void mutableStringMutableCopy(){//mutableString调用copy NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i",10]; NSString *str = [string mutableCopy]; NSLog(@"mutableStringMutableCopy():%i",str ==string);}int main(){ mutableStringMutableCopy();//可变字符串的MutableCopy(深拷贝) mutableStringCopy();//可变字符串的copy(深拷贝) stringCopy();//不可变字符串的copy(浅拷贝) stringMutablecopy();//不可变字符串的MutableCopy(深拷贝) return 0;}
------- android培训、java培训、期待与您交流!
0 0
- 黑马程序员——IOS基础——Copy
- 黑马程序员——ios开发基础之OC中Foundation框架(二)、copy以及单例
- 黑马程序员———ios基础
- 黑马程序员——OC中的copy
- 黑马程序员——IOS基础(OC基础)
- 黑马程序员——ios基础---Objective-C:基础语法
- 黑马程序员——IOS开发学习:retain和copy的区别——黑马 ios 技术博客
- 黑马程序员——IOS基础——Block
- 黑马程序员——IOS基础——Protocol协议
- 黑马程序员 ——ios基础 ——循环结构
- 黑马程序员 ——ios基础 ——函数
- 黑马程序员 ——ios基础 ——字符串
- 黑马程序员 ——ios基础 ——指针
- 黑马程序员——iOS基础第一篇
- 黑马程序员——IOS基础---Mac OS X
- 黑马程序员:iOS基础——个人笔记(一)
- 黑马程序员:iOS基础——个人笔记(二)
- 黑马程序员:iOS基础——个人笔记(三)
- 第三十四讲 LINQ 基础语法(一)
- 用C语言编写Windows服务程序的五个步骤
- Logistic回归与sigmoid
- c 实现斐波那契(fibonacii)数列
- css空白边叠加的几种情况介绍
- 黑马程序员——IOS基础——Copy
- svn
- js json 提交
- PLSQL Developer 通过oracle客户端 连接oracle
- 服务器集群学习笔记
- python中列表的pop、remove、-1
- DWR使用详解
- CStdioFile 读取unicade环境下乱码处理
- 关于android中调用系统拍照,返回图片是旋转90度..