iOS面试题基本答案一

本文探讨了多线程在移动端开发中的应用场景,包括数据库操作、页面请求处理等,并介绍了Masonry布局适配、支付流程实现、CoreData与SQLite对比等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、多线程使用场景:

(1)往数据库中插入数据(例如,当我们把用户通讯录中的联系人存储在数据库中的时候,有些用户的联系人非常多(3000多人),一开始把这个操作放在主线程中执行,结果造成界面长时间没有反应)。

解决办法:把数据库插入的操作改成在子线程中执行,当插入完毕的时候,在complete完成回调中通知住线程做相应的操作。

(2)单例。数据库对象创建时用dispatch_once方法执行,只执行一次;

(3)开发过程中很多页面会有很多请求,那么通常会使用dispatch_queue_t方法创建一个串行队列,然后使用dispatch_async方法异步执行串行队列里边的请求,当数据请求完成之后再通知dispatch_get_queue主线程更新UI。

2、Masonry适配:

引入头文件,使用mas_makeContrains添加约束;使用mas_UpdataContrains更新约束;使用mas_remakeContrains删除约束。

3、支付宝支付流程与常见问题

(1)注册账号,创建应用,获得公钥,(2)下载SDK,  (3) 生存订单信息(4)调用支付宝客户端(5)支付完成后将结果返回给客户。

最常见的问题是:RSA的算法,支付宝需要利用RSA来获得公钥和私钥

4、CoreData与 Sqlite3的区别:

CoreData是Sqlite3的一个升级,同样可以插入数据、查询、更新

5、Runtime运行时:

动态加载,消息转换。比较底层的纯C语言的API,消息机制,在程序运行过程中可以动态的创建一个类活着动态的为某个类添加属性方法。

6、横竖屏的适配:

(1)在VC中-(bool)shouldAutrotate...方法中设置设备支持的的方向;(2)重新设置子view的frame,当view的 frame设置成autoresSizesSubviews = YES;(3)在willAnimateRotationToZnter方法中重现配置subViewController的view

7、bounds和frame的区别:

bounds基于自身,永远都是(0,0)点

frame是基于父视图

8、NSTimer定时器需要在一个新的线程中去开启。否则UI线程操作会阻塞定时器,需要为定时器所在的线程添加NSRunloop,否则定时器可能不会动。

9、Git与SVN的区别。

git:(1)最重要的是可以建立分支,我们可以在分支下进行操作;(2)远程仓库和本地仓库。(3)代码回滚(可以回滚到之前提交到的地方)。

svn: 只有一个库,一旦出现问题,就会丢失代码,只剩电脑里面的内容。

10、安装Coacopods前提要安装Xcode,这样才会保证有一个ruby环境。优点:导入第三方哭比较快,就几行命令,集成快;缺点:打包时会有一些重复的哭,是工程内存变大。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值