一、如何绘制UIView
?
绘制一个UIView
最灵活的方法就是由它自己完成绘制。实际上你不是绘制一个UIView
,而是子类化一个UIView
并赋予绘制自己的能力。当一个UIView
需要执行绘制操作时,drawRect
:方法就会被调用,覆盖此方法让你获得绘图操作的机会。当drawRect
:方法被调用,当前图形的上下文也被设置为属于视图的图形上下文,你可以使用Core Graphic
或者UIKit
提供的方法将图形画在该上下文中。
二、什么是MVVM
?主要目的是什么?优点有哪些?
MVVM
即 Model-View-ViewModel
1.View主要用于界面呈现,与用户输入设备进行交互、
2.ViewModel
是MVVM
架构中最重要的部分,ViewModel
中包含属性,方法,事件,属性验证等逻辑,负责View
与Model
之间的通讯
3.Model
就是我们常说的数据模型,用于数据的构造,数据的驱动,主要提供基础实体的属性。
MVVM
主要目的是分离视图和模型
MVVM
优点:低耦合,可重用性,独立开发,可测试
三、get请求与post请求的区别
1.get是向服务器发索取数据的一种请求,而post是向服务器提交数据的一种请求
2.get
没有请求体,post
请求体
3.get
请求的数据会暴露在地址栏中,而post
请求不会,所以post
请求的安全性比get
请求号
4.get请求对url长度有限制,而post请求对url长度理论上是不会收限制的,但是实际上各个服务器会规定对post提交数据大小进行限制。
四、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?
好处:
1.使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片,视频的下载;
2.发挥多核处理器的优势,并发执行让系统运行的更快,更流畅,用户体验更好;
缺点:
1.大量的线程降低代码的可读性;
2.更多的线程需要更多的内存空间;
3当多个线程对同一个资源出现争夺的时候要注意线程安全的问题。
ios有3种多线程编程的技术:1.NSThread
,2.NSOperationQueue
,3.gcd
;
五、XMPP
工作原理;xmpp
系统特点
原理:
1.所有从一个client
到另一个client
的jabber
消息和数据都要通过xmpp server
2.client
链接到server
3.server
利用本地目录系统的证书对其认证
4.server
查找,连接并进行相互认证
5.client
间进行交互
特点:1)客户机/服务器通信模式;2)分布式网络;3)简单的客户端;4)XML的数据格式
六、地图的定位是怎么实现的?
1.导入了CoreLocation.framework
2.ios8以后,如果需要使用定位功能,就需要请求用户授权,在首次运行时会弹框提示
3.通过本机自带的gps
获取位置信息(即经纬度)
七、苹果内购实现流程
程序通过bundle
存储的plist
文件得到产品标识符的列表。
程序向App Store
发送请求,得到产品的信息。
App Store
返回产品信息。
程序把返回的产品信息显示给用户(App
的store
界面)
用户选择某个产品
程序向App Store
发送支付请求
App Store
处理支付请求并返回交易完成信息。
App
获取信息并提供内容给用户。
V八、支付宝,微信等相关类型的sdk的集成
1.在支付宝开发平台创建应用并获取APPID
2.配置密钥
3.集成并配置SDK
4.调用接口(如交易查询接口,交易退款接口)
九、 gcd
产生死锁的原因及解锁的方法
产生死锁的必要条件:1.互斥条件,2.请求与保持条件,3.不剥夺条件,4.循环等待条件。
解决办法:采用异步执行block
。
十、生成二维码的步骤
1.使用CIFilter
滤镜类生成二维码
2.对生成的二维码进行加工,使其更清晰
3.自定义二维码背景色、填充色
4.自定义定位角标
5.在二维码中心插入小图片
总结 以上就是这篇文章的全部内容了,希望本文的内容对各位iOS开发者们在面试的时候能有所帮助。 这里也推荐一些面试相关的内容!