iOS经典面试题大全

本文是iOS开发者面试的必备知识点汇总,涵盖深拷贝、iOS程序启动过程、loadView方法、单例模式、多线程(包括NSThread、GCD和NSOperation)等核心概念的详细解析,帮助你全面准备面试,提升技术水平。
摘要由CSDN通过智能技术生成

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值