客户端安全处理方式:
- 网络数据传输的一些敏感数据(用户密码、消费数据等)不能明文发送,要进行加密(MD5)
- 有时可能不用http协议,要自己定一些协议
- 本地文件存储(游戏存档,要加密)
- 源代码,要进行一些混淆
图片加载的比较慢如何处理,怎样优化程序性能
- 图片下载放在异步线程
- 图片下载过程中用占位图片
- 如果图片特别大,考虑多线程断点下载
设计一个框架API时,需要考虑的问题
- 针对你要实现的功能,接口是否符合功能的实现
- 类名,方法名功能命名的清晰度
- 方法供使用者调用时是否简单够用
- 尽量少依赖其它框架
app需要加载超大量数据,给服务器发送请求,但是服务器卡住了怎么办
- 设置请求超时
- 给用户提示请求超时
- 根据用户操作决定是否重新请求数据
NSNotification 在哪个线程中发送通知就在哪个线程中执行相应方法。
所以如果问是否可以把比较耗时的操作放在NSNotification中,要考虑此时是在主线程还是异步线程
Runloop的输入源和定时源
- 每个线程都有一个runloop
- runloop处理的事件有两种不同的来源,输入源和定时源
- 输入源传递异步消息,通常来自于其他线程或者程序(比如其他线程完成操作回到主线程,处理线程间交互)。定时源传递同步消息,在特定时间或一定时间间隔发生(处理主线程时间UI刷新、事件)。
- 输入源处理异步消息,定时源处理同步消息
网络处理过程中发现很卡
- 检查网络请求操作是否被放在主线程
- 查看异步请求的数量是否太多
- 数据量是否太大,可以先清除掉一些不必要的数据(在didReceivedMemoryWarning里面清除看不见的文字及和图片)
- CPU使用率和内存问题
怎么解决sqlite锁定的问题
造成sqlite锁定的情况
操作过于频繁,,比如一次性执行100000条语句(在一个for循环里)
两个线程同时访问数据库,比如买票卖票问题
如何解决
- 设置数据库锁定的处理函数
int sqlite3_busy_handler(sqlite3*, int ( * ) (void * , int ), void *); - 设定锁定时的等待时间
int sqlite3_busy_timeout(sqlite3*, int ms);
在异步线程中下载很多图片失败了,如何处理,结合runloop谈谈解决方案
- 重新下载图片
下载完毕利用runloop回到主线程(performSelectorOnMainThread)刷新UIImage
isa指针有什么用
- 表明是属于什么类的
控制器生命周期
怎么封装view
怎么进行适配
分为系统适配和UI适配
推送服务
首先要有三方,手机、公司的服务器,苹果的APNS
手机要想APNS注册一个deviceToken,然后手机告诉公司服务器它的deviceToken,然后公司服务器告诉APNS要向某deviceToken发送推送,接着APNS根据该deviceToken发送推送。
内存管理的几条原则
- 只要用alloc、new、copy创建一个新的对象,就要调用release或autorelease
- 只要调用了retain,就要调用release或autorelease
- @property参数里只要有copy或retain(ARC下strong)