iOS面试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS面试相关的知识,希望对你有一定的参考价值。

1.iPhone OS有没有垃圾回收(gc)?

答:没有。iPhone开发的时候没有垃圾回收机制。

2. 什么是Notification?

答:观察者模式,controller向defaultNotificationCenter添加自己的 notification,其他类注册这个notification就可以收到通知,这些类可以在收到通知时做自己的操作(多观察者默认随机顺序发通知给 观察者们,而且每个观察者都要等当前的某个观察者的操作做完才能轮到他来操作,可以用NotificationQueue的方式安排观察者的反应顺序,也 可以在添加观察者中设定反映时间,取消观察需要在viewDidUnload 跟dealloc中都要注销)。

参考链接:http://useyourloaf.com/blog/2010/6/6/delegation-or-notification.html

3. 什么时候用delegate,什么时候用Notification?

答:delegate针对one-to-one关系,并且reciever可以返回值 给sender,notification 可以针对one-to-one/many/none,reciever无法返回值给sender.所以,delegate用于sender希望接受到 reciever的某个功能反馈值,notification用于通知多个object某个事件。

4.什么是KVC和 KVO? 

答:KVC(Key-Value-Coding)内部的实现:一个对象在调用setValue的时候,(1)首先根据方法名找到运行方法的时候所需要的环 境参数。(2)他会从自己isa指针结合环境参数,找到具体的方法实现的接口。(3)再直接查找得来的具体的方法实现。KVO(Key-Value- Observing):当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针就会指向一个中间类,而不是真实的类。所以 isa指针其实不需要指向实例对象真实的类。所以我们的程序最好不要依赖于isa指针。在调用类的方法的时候,最好要明确对象实例的类名。

5.ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什么时候调用的?

答:在自定义ViewController的时候这几个函数里面应该做什么工作?答:viewDidLoad在view 从nib文件初始化时调用,loadView在controller的view为nil时调用。此方法在编程实现view时调用,view 控制器默认会注册memory warning notification,当view controller的任何view 没有用的时候,viewDidUnload会被调用,在这里实现将retain 的view release,如果是retain的IBOutlet view 属性则不要在这里release,IBOutlet会负责release 。
6.ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?默认的操作是什么?

答:默认调用[super didReceiveMemoryWarning]

以上是关于iOS面试的主要内容,如果未能解决你的问题,请参考以下文章

我的iOS面试经历(附面试题干货)

iOS面试资源

iOS面试题

iOS面试题都有哪些

iOS面试准备之思维导图(转)

全网最新iOS面试题-大厂加薪篇