1.Object-c的类可以多继承吗?可以实现多个接口吗?
答:不可以多继承,可以用实现多个接口的方式来完成多重继承。
2.Category是什么?重写一个类的方式用继承好还是分类好?为什么?
答:Category是类别,一般情况用类别,用类别重写类的方法仅对本类别有效。
3.#import和#include有什么区别?@class呢?#import<>和#import“‘又有什么区别?
答:#import是oc导入头文件的关键字,#import头文件只会自动导入一次,不会重复导入;
#include是C/C++倒入头文件的关键字
@class类的声明,当执行时才去查看类的实现文件,可以解决头文件的相互包含;
#import<>用来包含系统的头文件,#import“”用来包含用户头文件。
4.属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,什么情况下使用?
1).readwrite 是可读可写的,需要生成getter/setter方法时;
2).readonly 可读不可写,只生成getter方法,不希望属性在类外改变时;
3).assign 是赋值特性,setter方法将传入参数赋值给实例变量,仅设置变量时;
4).retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;
5).copy 表示赋值特性,setter方法将传入对象赋值一份,需要完全一份新的变量时;
6).nonatomic 非原子操作,决定编译器生成的setter/getter是否是原子操作,atomic表示多线程安全;
5.写一个setter方法用于完成@property(nonatomic,retain)NSString * name
写一个setter方法用于完成@property(nonatomic,copy)NSString * name
答:
```
-?(void)?setName:(NSString *)?str{
[str?retain];
[name?release];
name?=?str;
}
-?(void)setName:(NSString?*)str{
i
}
```
网友评论