面霸题目
1、@property (nonatomic, retian) NSArray *Cars;的setter方法
对于对象setter方法,一定不能忘记重写dealloc方法
- (void)setCars:(NSArray *)cars
{
if(_Cars != cars)
{
[_Cars release];
_Cars = [cars retain];
}
}
- (void)dealloc
{
[_Cars release];
[super dealloc];
}
2、分类和继承的区别
1>分类能够添加新的方法,但是不能新的成员变量/属性;继承可以添加方法和成员变量/属性
2>分类是对类的补充,不会产新的类;继承往往产生新的类
3>分类里面可以写@property能产生getter和setter方法声明,但是不能产生方法的实现,同样不会产生_开头的成员变量,所以你会发现@property可以在分类中使用二编译不会报错,只有当运行的时候,正真使用到getter和sett方法的时候,程序回直接崩掉
3、@property都做了哪些事
1>生成_开头的成员变量
2>产生方法声明
3>产生方法实现
4、苹果的内存管理原则
1>谁创建谁release(当有alloc,new,(mutable)copy,后面就一定要使用release或者autorelease)
2>谁retain谁release
5、strong和weak
strong和weak是ARC当中的出来的,retain被strong替换
在演示strong和weak的区别的时候最好的方法是重写dealloc方法,观察对象的释放情况
6、NSNull,NULL,nil的区别
1>nil用于赋值空oc对象
2>NSNull用于在集合对象中不可以使用nil的场合,因为在NSArray和NSDictionary当中nil具有特殊含义,标识数组和字典集合的结束,因此在数组和字典当中如果要表示一个oc对象“什么都没有”,那么可以使用NSNull,NSNull是一个单例的类,只有一个对象方法null
3>NULL指向通用类型的指针