凡经历过iOS面试的我们总会发觉,即使实际开发中做过许多项目,也难免为一个普通的面试题受挫。这也许不是因为我们技术不过关,而是因为在平时我们忽略了怎样将用到的知识很好的表述出来。闲暇之余我把一些常见的iOS面试问题总结一下,即使不是为了面试,也有助于对基础知识的回顾。
接下来通过五篇文章来整理这些知识:
iOS面试知识总结之基本概念
iOS面试知识总结之功能区分
iOS面试知识总结之代码片段
iOS面试知识总结之问题解决
iOS面试知识总结之文章收录
持续更新中....
此篇总结在iOS面试中可能会被问到的有关Bug解决或者功能实现思路等方面的问题:
1.内存优化的方案
1.首选使用ARC环境开发,但是也要注意防止循环引用的产生,避免内存泄漏
2.懒加载,延迟创建对象,需要的时候才创建节省内存消耗
3.复用,单元格的服用,避免过多的创建对象
4.选择正确的是数据结构,不必要的时候不使用可变容器
5.单例模式
6.及时删除缓存信息
2.Xcode工具的使用
在开发过程中遇到类似内存泄漏的问题,我们可以通过Xcode中的Instruments来分析解决问题:
【Xcode】 > 【Open Developer Too】>【 Instruments】
1.Leaks:检测内存泄漏
2.zombies :僵尸对象,指的是对应的内存已经被释放并且不再会使用到,但是你的程序却在某处依然有指向它的引用
3.iOS中的回调机制
1.代理:也叫委托,当某个对象收到多个事件,并要求同一个对象来处理所有事件时。委托机制依赖于某个协议定义的方法来发送消息。
2.通知:当需要多个对象或两个无关对象处理同一个事件时使用。
3.Block:适用于回调只发生一次的简单任务。
4.BAD_ACCESS的错误原因
原因:访问了野指针,比如已经释放的对象的成员变量或者发送消息。
调试:Enaable zombie objects 、设置全局断点
5.解决报错libc++abi.dylib handler threw exception
遇到这种错误,即使用了All Exceptions,也断点到相应的代码了,但是没打印对应的日志。此时我们可以添加如下的代码来打印异常log:
@try{
//可能出现错误的代码片段
} @catch(NSException *exception) {
NSLog(@"exception:%@", exception);
} @finally {
}