ios理论
文章平均质量分 66
WQwq1985
屌丝
展开
-
8,手动内存管理
1.oc内存管理的特点Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。在没有autorelease的情况下,oc和c/c++一样,自己申请,自己释放,内存管理完全自己掌控。oc中每一个对象有一个引用计数,表示有多少个指针引用了这个对象,当引用计数为0的时候,系统就会销毁这个对象。原创 2013-03-14 11:21:25 · 1485 阅读 · 0 评论 -
8观察者模式( kvo基于键值 和Notification通知)
KVO提供一种机制,当指定的被观察的对象的属性被修改后,KVO自动通知相应的观察者。KVC(键值编码)是KVO的基础。通知是一种广播机制,在事件发生的时候,通过中心对象,一个对象能够为所有关心这个事件发生的对象发送消息两者都是观察者模式,不同在于KVO是被观察者直接发送消息给观察者,是对象间的直接交互。通知则是两者都和中心对象交互,对象互相并不知道彼此(一)KVO.Key Valu原创 2013-02-28 12:43:18 · 3815 阅读 · 0 评论 -
7预处理
//预处理程序的工作类似文本替换,一般全大写,可以嵌套//可以替换运算。一定不要分号结束。太长的时候用 \加回车来写多行//可以带参数.简单的展开不会考虑运算顺序,因此应该多加括号,避免错误#define PI 3.141592654#define TWO_PI 2.0 * PI#define IS_LEAP_YEAR year %4 == 0 && year % 100 !=原创 2013-02-28 00:25:45 · 344 阅读 · 0 评论 -
5对象复制
http://blog.sina.com.cn/s/blog_991afe570101h9yp.html什么是深复制和浅复制?区别是什么?浅复制:只复制指向对象的指针,而不复制引用对象本身。 深层复制:复制指针指向的对象本身。 区别是:浅复制之后的两个指针指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源 还是只有一份,深复制之后两个指针各自指向一个内存资源转载 2013-02-27 21:04:07 · 495 阅读 · 0 评论 -
6归档
(书中的定义)归档就是用某种格式来保存一个或多个对象,以便以后还原这些对象(复杂的说法)面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络传输或写入文件中。也就是序列化和反序列化的过程,因此有编码和解码的过程。一般有两种归档的方式:属性列表(XML文件,plist文件)和带键值的编码1.原创 2013-02-27 23:56:25 · 422 阅读 · 0 评论 -
4.重载,重写
1.什么是重载?oc中不存在重载。在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数C++函数名相同是函数的名称相同。参数列表不同指参数的个数或者类型不同。oc中函数名相同包含函数名称和所有的标签相同。oc不允许同一作用域内的同名函数,因此不允许重载。即不允许函数名相同,参数个数相同,但类型不同的两个函数存在。在oc中同一作用域内不允许相同原创 2013-02-24 12:25:31 · 1550 阅读 · 0 评论 -
1.多态
问答:什么是多态?不同类之间共享相同方法名的能力。或不同类以自己的方式响应相同消息的能力称为多态。object-c如何实现多态?多态是利用动态类型、动态绑定、选择器机制和类方法列表(dispatch table),isa指针,父类指针等数据结构来实现的。如何实现动态类型识别?概括的说是:将对象存入Id这个弱数据类型,直到运行时才确定对象所属的类。原创 2013-02-26 14:50:47 · 556 阅读 · 0 评论 -
2.类别和扩展
什么是类别:类别是为现有类添加新方法的一种方式。类别要解决的问题是?在不访问类源代码,以及不添加子类的情况下,为现有的类增加新方法。子类是一种办法,但是面对类簇和工具包或类库时确没有能力为力类别解决了这个问题。类别的作用?1.在不需要知道类源码的情况下扩展现有类,并且可以将类的实现分散到多个模块(文件)中。类的主声明可以放在多个文件中,但实现只能在一原创 2013-02-24 17:29:17 · 923 阅读 · 0 评论 -
杂
1.super和selfself相当于c++中的this,指向当前调用方法的类。super只是一个编译器指示符它也是指向当前调用方法的类,但是super告诉编译器要去调用父类的方法,而不是本类里的。init方法有一个标准的模板,重写init的时候一定会用到:-(id)init{self = [super init];if(self){ ........初始化代码}ret原创 2013-03-08 14:48:19 · 498 阅读 · 0 评论 -
0题目
1.Difference between shallow copy and deep copy? 浅复制和深复制的区别?浅复制:仅复制指向对象的指针,而不复制引用对象本身。 深复制:复制指针的同时还复制指针指向的对象本身。 区别是:浅复制之后的两个指针指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源 还是只有一份,深复制之后两个指针各自指向一个内存资源,把原创 2013-02-28 12:06:09 · 497 阅读 · 0 评论