1.INTERVIEW 共勉
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 与2800+iOS开发者一起交流学习成长!
2.INTERVIEW 准备
3.iOS developers 方向
4.INTERVIEW QUESTION
4.1深copy和浅copy
- 浅拷贝:
1.对内存地址的复制,让目标对象指针和源对象指向同一片内存空间.
2.内存销毁的时候,指向这片空间的指针需要重新定义才可以使用,要不然会成为野指针
3.拷贝指向原来对象的指针,使原对象的引用计数加+1
4.相当于创建了一个指向原对象的新指针,并没有创建一个新的对象.
-
深拷贝:
1.拷贝对象的具体内容,而内存地址是自主分配的
2.拷贝结束之后,两个对象存在的值是相同的,内存地址是不一样的
3.两个对象没有任何关系 -
本质区别:
1.深拷贝是内容拷贝,浅拷贝是指针拷贝
2.是否有新的内存地址
3.是否影响内存地址的引用计数. -
案例一
NSString * str1 = @"copyStr";
NSMutableString *str2 = [str1 copy];
NSMutableString *str3 = [str1 mutableCopy];
NSLog(@"str1:%p--%@",str1,str1);
NSLog(@"str1:%p--%@",str2,str2);
NSLog(@"str1:%p--%@",str3,str3);
2018-04-14 14:50:54.117652+0800 MutyCopy-Copy[2644:63575] str1:0x109a48068--copyStr
2018-04-14 14:50:54.117885+0800 MutyCopy-Copy[2644:63575] str1:0x109a48068--copyStr
2018-04-14 14:50:54.118010+0800 MutyCopy-Copy[2644:63575] str1:0x600000259a40--copyStr
1.str1,str2地址相同,而Str3地址不同
2.NSString的copy是浅拷贝,copy返回的对象是不可变对象
3.mutablecopy是深拷贝
*案例二:
NSMutableString * str1 = [NSMutableString stringWithString:@"mutableStr"];
NSMutableString * str2 = [str1 copy];
NSMutableString * str3 = [str1 mutableCopy];
NSLog(@"str:%p-----%@",str1,str1);
NSLog(@"str:%p-----%@",str2,str2);
NSLog(@"str:%p-----%@",str3,str3);
2018-04-14 15:04:50.092820+0800 MutyCopy-Copy[2685:70866] str:0x60000025b210-----mutableStr
2018-04-14 15:04:50.093059+0800 MutyCopy-Copy[2685:70866] str:0x60000022ca40-----mutableStr
2018-04-14 15:04:50.093217+0800 MutyCopy-Copy[2685:70866] str:0x60000025b540-----mutableStr
1.str1,str2,str3地址都不同
2.NSMutableString对象copy与mutableCopy都是深拷贝
3.copy返回的对象是不可变对象
4.2 iOS程序的启动过程
- 首先找到程序入口,执行main函数
- main -->> UIApplicationMain
- 创建UIApplication对象
- 创建UIApplication的代理对象,给UIApplication对象代理属性赋值
- 开启主运行循环,作用接收事件,让程序一直运行
- 加载info.plist,判断有没有指定main.storyboard,如果指定就去加载.
4.3 loadView
- 什么时候被调用?
每次访问VC的view而且vie