Runloop是什么?如何用?在什么场景下会用到?
RunLoop是与线程进行关联的,可以这样理解,每一个线程中会创建一个RunLoop(不一定每个线程都有RunLoop),而不是一个task创建一个RunLoop。
系统会在主线程开始运行时,隐式的启动主线程的RunLoop,而辅助线程不会自动启动,需要显式的启动。
数据列表需要展示大量数据,如何优化?至少三个方面?
第一先利用TableVIew或者CollectionView的重用机制;第二再定制各种样式的Cell ;重点第三通过CoreText或者TextKit来做富文本的展示,尽量减少UI控件的绘制工作 再深入一点:通过空间换取时间,利用缓存方式进行缓存Cell的高度,从而减少计算的时间
SQLite和CoreData区别?优缺点?FBDataBase使用?coreData结构构成?
SQLite和CoreData没有本质上的区别,CoreData是对原始SQLite数据库API访问进行了一层封装,通过面向对象的接口进行管理数据缓存,比使用SQL语句操作SQLIte数据库更加简单和方便,当然CoreData也有缺点,比如API不够用,处理大量数据会变得缓慢,SQLite就没有这样的问题,只要写SQL语句的人有经验,大部分是可以避免的,当然SQLIte也会有一些弊端,比如网络数据怎样自动化映射到数据库中?而CoreData就有类似由Github写的Mantle开源库,很好的处理这个问题。CoreData提供一个管理上下文,数据模型,数据持久化存储助理协调器。
上千条数据需要插入数据表,如何优化提高效率?
使用事务,FMDB中有现成的代码,beginTransaction。
同时对同一张表进行操作?
使用锁、串行调度队列等都可以,参考FMDB中的FMDtabaseQueue。
多线程里面主要由哪几种?它们的优缺点?
多线程:NSOperation配合NSOperationQueue,GCD,NSThread;GCD的缺点难于管理,不可取消和暂定,NSTr难于定位问题,NSOperation可用性高,可支持调度、暂停,取消等功能,一般都会才去继承NSOperation来做更深入的定制线程
实现类似网易新闻的滑动标签选项
网易新闻的滚动标签和容器都是一个联动的ScrollView,通过统一管理数据源,利用KVO做两个ScrollView的联动工作(项目https://github.com/JackTeam/XHNewsFrameworkExample)(wiki:https://github.com/JackTeam/XHNewsFrameworkExample/wiki/XHNewsFramework%E6%A1%86%E6%9E%B6%E6%96%87%E6%A1%A3)