1.MVC
数据模型:负责存储、定义、操作数据;
视图:用来展示数据给用户,和用户进行操作交互;
控制器:m&v的协调者,控制获取数据,将数据交给视图去展示;
2.线程&进程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分配的基本单位,是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(程序计数器、一组寄存器和栈),一个线程可以创建和撤销另一个线程。
一个线程只属于一个进程,但一个进程至少有一个线程;
同一个进程的所有线程共享进程的所有的资源;
线程在执行过程中,需要协作同步,不同进程的线程间要利用消息通信的方式实现同步;
真正的处理机上运行的是线程;
线程是指进程内的一个可执行单元,也是进程内的可调度实体。
》调度:线程作为调度和分配的基本单元,进程作为拥有资源的基本单元
》并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行
》线程不拥有系统资源,但可以访问隶属于进程的资源
》创建、撤销进程的开销比较大
3.进程的同步机制
原子操作、信号量机制、自旋锁、分布式系统
4.进程死锁
资源竞争以及进程推进顺序非法
5.死锁的4个必要条件
互斥、请求保持、不可剥夺、环路
6.死锁处理
死锁策略、预防策略、检测与解除死锁
7.kvc、kvo
》kvc(键值编码)是一种简介访问对象实例变量的机制,该机制可以不通过存取方法就可以访问对象的实例变量
》kvo(键值观察)是一种能使得对象获取到其他对象 属性变化的通知机制
》实现kvo键值观察模式,呗观察的对象必须使用kvc来修改它的实例变量,这样才能被观察者观察到。kvc是kvo的基础、kvo的实现是建立在kvc的基础之上
8.深浅复制
9.assign、retain、copy、nonatomic
assign:1.普通复制,一般用于基本数据类型,2.常见委托涉及模式、协议,以此来防止循环引用
retain:保留计数,获得了对象的所有权,引用计数+1
copy:一般字符串使用copy,Foundation中的不可变对象使用copy效果相当于retain,只是引用计数+1
nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能(一般是在非ARC环境下才出现的关键字)
10.strong&weak、_unsafe_unretained与weak的区别
》strong--强引用,weak--弱引用;在ARC中,使用strong告诉编译器自动插入retain,weak相当于手动管理内存的assign,但是即使在arc中代理协议的引用也只能用assign,防止循环引用
》_unsafe_unretained与weak功能一直,区别在于指向的对象销毁后weak会将变量置为nil,防止调用野指针
11.arc存在内存泄露
循环引用导致内存泄露,协议和block导致循环引用;objective-c对象与coreFoundation类之间桥接是,管理不当也会产生内存泄露
12.事件响应者链
响应者链表示一系列的响应者对象。事件被交由第一响应者对象处理,如果第一响应者不处理,事件被沿着响应者链向上传递,交给下一个响应者
View->ViewController->Window->application->丢失事件
13.SVN、git使用
如何使用SVN、git管理代码
14打包静态库
15.APP发布的上架流程
16.storyboard的使用