1、 runtime用过吗?runloop用过吗?实际项目中用到的场景?
RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。
[self goHome];//这是我们常见的方法调用,通过clang编译器,它却是这样的
objc_msgSend(obj,@selector(goHome));
首先,编译器将代码[obj goHome];转化为objc_msgSend(obj,@selector(GoHome));,在objc_msgSend函数中。首先通过obj的isa指针找到obj对应的class。在Class中先去cache中通过SEL查找对应函数method(猜测cache中method列表是以SEL为key通过hash表来存储的,这样能提高函数查找速度),若cache中未找到。再去methodList中查找,若methodlist中未找到,则取superClass中查找。若能找到,则将method加入到cache中,以方便下次查找,并通过method中的函数指针跳转到对应的函数中去执行。
2、类和扩展有什么区别,分别是干什么的?实际项目中用到的场景?
3、多线程GCD,NSOperition用到的场景平时开发时候。
4、UIView和UILayer有什么关系,平时用layer多吗?场景?
5、socket平时用过吗?用到了系统的哪些类?场景?
GCDAsyncSocket.h
6、block用的多吗?场景?
7、_ _ weak和_ _block的区别?
8、通知、代理、block有什么区别,平时用到的场景?
9、平时开发过程中用到的设计模式有哪里?
10、MVC三者之间的关系?
1)Model 和 View 永远不能相互通信,只能通过 Controller 传递。
2)Controller 可以直接与 Model 对话(读写调用 Model),Model 通过 Notification 和 KVO 机制与 Controller 间接通信。
3)Controller 可以直接与 View 对话,通过 outlet,直接操作 View,outlet 直接对应到 View 中的控件,View 通过 action 向 Controller 报告事件的发生(如用户 Touch 我了)。Controller 是 View 的直接数据源(数据很可能是 Controller 从 Model 中取得并经过加工了)。Controller 是 View 的代理(delegate),以同步 View 与 Controller。
11、OC的内存管理机制?简要说明一下。
12、swift和OC的区别是什么?
13、TCP/UDP的区别?分别是什么?
14、KVC、KVO分别是什么?实际开发中什么时候会用到?
网友评论