iOS面试题
1,什么是notification,什么时候用delegate 什么时候用Notification?
Notification 是通知中心 . 代理一般用于两个对象之间一对一的通信交互,而且需要设置一个协议方法,并且代理方要遵循这个协议并且实现其方法,双方之间要建立代理关系才可以实现通讯;通知一般用于一对多情况下地通讯,通信对象之间不需要建立代理关系,但是使用通知,代码阅读性差.
2浅拷贝和深拷贝的区别?
浅拷贝只复制对象本身,不对里面的属性复制
深拷贝不仅复制对象的本身,对象持有的属性对象也做复制.
3.Timer的间隔周期准吗?为什么?怎样实现一个精准的timer
timer的间隔周期一般是准确地,但是当主线程出现堵塞情况时,这样就有可能导致定时器延迟从而不准确,我们可以开一个多线程,在这个多线程上运行定时器,这样多线程只运行定时器不会因为堵塞而产生误差.
4.UIScrollerView用到了什么设计模式,还能在foundation库中找到类似的吗?
组合模式composition 所有的container view都用了这个模式
观察者模式observe ,所有的uiresponder都用了这个模式
模板(template)模式,所有的datasource 和delegate接口都是模板模式典型应用
5.UIView和CALayer有什么区别
两者最大的区别就是图层不会直接渲染到屏幕上,UIView 是iOS系统中界面元素的基础,所有的界面元素都继承它,它本身完全是由CoreAnimation来实现的.它真正的绘图部分,是由一个图层类来管理.UIView本身更像一个图层的管理器,一个UIView上可以展示很多个图层,每个图层显示一种东西,增强UIV的展现能力
6.UIView类animationWithDuration:animation:为例,简述UIView动画原理
7.autorelese和垃圾回收机制有什么关系?IPhoneOS有没有垃圾回收机制谈谈object-c的内存管理方式及过程?
A:autorelease是内存不够时自动释放,也就是杀后台程序,垃圾回收机制是杀那些优先级很低的程序,包括已经关掉有残留的. iOS开发只支持手动内存管理和ARC 模式
B:谁创建谁释放 当你用new copy,alloc 方法创建一个对象时,该对象的保留计数器值为1,当你不在使用该对象时,你就要负责向该对象发送一条release或作autorelease消息这样,该对象将在使用寿命结束时被销毁
当你通过任何其他方式来获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理,如果你打算在一段时间内拥有该对象
则需保留它并确保在操作完成时释放
如果你保存了某个对象,你需要(最终)释放或自动释放该对象,必须保持retain和release方法的使用次数相等.
8.简述push原理 push的证书和其他的有什么不一样?
第一阶段:服务器把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。
9.UIView的圆角属性设置方法,masksToBounds属性的作用
m_mainImgView.layer.cornerRadius = 6; m_mainImgView.layer.masksToBounds = YES;)
决定子layer是否被当前layer的边界剪切。默认是NO。
10.http和socket编程异同;
相同:都是都是基于TCP/IP 的网络通讯连接
不同点:http就是所谓的短连接,即客户端想服务器端发送一次请求,服务器端响应后会立即断掉
socket就是所谓的长连接,理论上客户端和服务器端一旦建立连接就不会主动断掉
怎么把10个view围城一个圈 根据手势传动
通过GCD来做十个数据的计算
AFNetWorking实现原理
SDWebimage实现机制
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。