1.iOS缓存方案?
<1>网络优先:开始总是从网络获取,如果获取失败,从本地获取。
<2>本地优先:在一段时间内从本地获取,当超过这个时间,然后重新请求网络数据。
<3>混合(智能):打开程序先从本地获取展示,然后请求数据,请求完成后刷新界面。
2.iOS性能优化?
提示:
<1>视图复用
<2>数据缓存
<3>不能堵塞主线程
<4>响应时间短
<5>多个下载控制并发数
<6>用arc管理内存
<7>正确使用集合(NSArray,NSDictionary,NSSet,NSIndexSet)
<8>懒加载
<9>重用大开销对象(NSDateFormatter,NSCalendar)
<10>选中合适的数据存储
<11>加速启动时间
<12>合适的地方使用自动释放池
<13>避免循环引用
<14>当涉及到定位的时候,不用的时候把定位服务关闭。
<15>加锁对性能有重大开销
<16>界面最好不要添加太多subView
3.如何保证tableView平滑滚动?
提示:
<1>cell复用
<2>Cell尽量避免添加过多的子视图
<3>缓存行高
<4>如果cell的内容来自网络,需要异步加载,并且缓存请求结果
<5>cell上尽量避免复杂计算。
<6>尽量不使用cellForRowAtIndexPath,如果需要使用,只用一次然后缓存结果。
<7>使用不透明的视图(opaque)
<8>不要堵塞主线程
<9>尽量不要对cell的子视图频繁添加、删除操作。
C语言 跟oc的关联
结构体:不同数据类型的一种封装,在oc里全部都是用make来赋值的!这是一个方向!
OC
类:(结构体+函数),类是一类事物,是某一类对象的一个抽象。
父类:所有子类都具备的特性(属性和方法),可以封装成父类
类别、拓展(对现有一些类的一些补救措施)
数据存储的整理
内存中保存:数组、字典、字符串、类、各种对象、
特点:程序运行期间有效。
内存结构:栈段、堆段、数据段、代码段
栈段:函数中的参数和局部变量,操作系统自动开辟和自动释放
数据段:static、const声明周期是整个程序运行期间
硬盘(沙河):在安装一个app的时候,它的位置是有iOS执行的,不可修改,这个文件夹的系统全系,也是系统指定的。大小不定,权限不变。
归解档、文件操作、数据库、coreData、NSUserDefault、Plist
协议跟Bolck的基本原理!
他们都是在占空间的,是系统给我们封装好的一个工具 而已。。别想多了。。!他们都是数据类型。。!
MVC的理解
M是模型数据,负责资源的供给。。
V是负责前线打仗的。
C是指挥官。指挥怎么做。。!这就是设计模式!
自定义的View
一个方法被重复调用的时候,要清空前一个的东西,要干干净净的!
独立出相同功能的东西。。!
自定义控件的理解,以及思路,其实很简单的,不管是什么控件,你只要单独把他看成一个对象,对象里面有进去的东西也有出来的东西,如果你要用我就self我,我长出来什么样子我已经写死了,你就给我弄东西就可以了,,!控制器找对象!对象长什么样子,就看你有什么属性了!还要记得系统给对象的属性就ok了,这就是思想。。!
C语言中的封装:
数组:相同数据类型的封装
结构体:不同数据类型的一种封装
函数:单一功能逻辑的封装
OC中封装:
类:(结构体+函数),类是一类事物,是某一类对象的一个抽象。
对象:
龙生九子,子子不同。
同类的子类可以多样化
父类:所有子类都具备的特性(属性和方法),可以封装成父类
子类:本类所特有的一些特性,可以在子类中添加
面向对象语言:使用面向对象的思想指导使用面向对象的语言,编写面向对象的程序。
生活逻辑的反应——>如何创建对象
类别、拓展(对现有一些类的一些补救措施)
第三方的一些框架:
继承:在现有属性和方法的基础之上,需要额外添加特有的属性和方法,可以使用。
普通的数据类和逻辑类,页面、协议、block
多态:父类指针来接收子类对象
2、数据存储的整理
程序:保存数据和处理数据
内存中保存:数组、字典、字符串、类、各种对象、
特点:程序运行期间有效。
内存结构:栈段、堆段、数据段、代码段
栈段:函数中的参数和局部变量,操作系统自动开辟和自动释放
堆段:alloc,CF、
数据段:static、const声明周期是整个程序运行期间
代码段:程序代码编译后的二进制文件
硬盘(沙河):在安装一个app的时候,它的位置是有iOS执行的,不可修改,这个文件夹的系统全系,也是系统指定的。大小不定,权限不变。
归解档、文件操作、数据库、coreData、NSUserDefault、Plist