1.内存管理的基本原则:
对自己拥有的对象负责,凡是你通过retain,alloc,copy等手段获得了所有权的对象,都必须在你不再使用的时候,由你来调用release,autorelease等手段来释放对它的所有权。
在一定的代码段内,对同一对象所做的copy,alloc和retain的操作次数应当与release和autorelease操作的次数相等。
可以在类的dealloc方法中释放你占有的实例变量。
对于便利构造器和访问器来说,你没有通过上面的手段获得对象的所有权,因此在这些情况下,你无需对获得的对象进行额外的释放操作。
2.self和super是什么,id表示什么数据类型:
self指本类的某一个对象,有时候也指类对象。super指父类。id指任意对象类型,不能表示基本数据类型。
3.叙述一下实例变量和局部变量的作用范围。
局部变量的作用范围:它所在的语句块和所在的方法内有效。
实力变量的作用范围:本类所有的实例方法中有效,如果有子类,保护类型的实例变量在子类中也有效,公有类型的实例变量会在所有类中有效,一般不提倡使用公有,这违背了封装的特性。
4.实例变量的可见级别:
三种可见级别:public,protected,private。默认的可见级别是protected。
public的可见度很高,所有类可见,protected本类及子类可见。private只有本类里的实例方法可以访问。
5.面向对象和面向过程有什么不同?
面向对象和面向过程是从不同角度出发的,
面向过程是一种以时间为中心的编程思想,就是分析问题需要经过对少步骤才能解决,然后用函数把这些步骤一步一步实现,使用的时候一个一个一次调用就可以了。
面对对象是一种以事物为中心的编程思想,把构成问题的事物分解成各个对象,简称 对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
6.子类从父类那里得到什么,cocoa中常见的集合有哪几种
除了私有变量之外的所有实例变量和实例方法;如果父类中类目和协议,也将一起得到。
数组、集合、字典。
7.类目和延展有什么作用?
类目:为已知的类增加新方法、作为子类的替代手段,给类中的方法分类、易于多人合作开发同一个类。
延展:通过在本类的定义里使用类目来声明私有方法,也是对类的一种扩展。
类目和 延展只能增加实例方法,不能增加实例变量。
8.copy和retain的区别
copy是内容拷贝,retain是指针拷贝。copy其实是建立一个相同的对象,其对象地址和原来的对象的地址不同,
retain则是相当于把指针拷贝了一次,地址仍然相同。
只有接受了NScopying协议的对象才能使用copy。
9.协议和类的区别
类的接口声明是严格与特定的类关联的,尤其是由本类细线的方法的声明,协议声明的方法与任何特定的类都无关,它可以被任何类来实现,协议本质上就是一堆还未与任何类的实现代码关联的方法的声明,只有声明部分,没有实现部分,协议里面的方法也可以设置成optional。