天天看点

黑马程序员-----面霸题目

面霸题目

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指向通用类型的指针