相关知识点:
1,Retain,copy assign 三个关键字的区别
Retain 用于修饰oc 对象 类型
copy 由于修饰字符串nssting 类型或者 block 类型
assign 由于修饰基本数据类型
2,oc 有多继承吗?不是的话,有什么代替方法?
不是,但继承,可用分类扩充法
3,@class的作用是什么?
声明某个已存在的类
Xcode项目的目录结构是怎么分组的?
一级目录是按模块分的,二级目录是按模块内的功能分为model view controller ;
工具类可单独分一个category 目录
4,堆和栈的区别
栈是由系统维护 ,栈一般存放对象的引用
堆是由程序员维护,堆一般存放new出来的对象
5,定义属性的时候,什么情况下 使用nonatomic,atomic ,copy,assign,和retain
nonatomic:非原子型的,线程异步执行
atomic:原子性的线程同步执行
copy:复制一个对象,并将其作为返回值 同时设置保留数量为1;
assign:用于基本数据类型
retain:对象被引用后计数器加1。
6,#import和#include,@class有什么区别?#import<>根#import“”又有什么区别?
1》#import和#include都能完整包含某个文件的内容,#import能防止同一个文件被包含多次
2》@class仅仅是声明一个类名,并不会包含完整的声明;@class还能解决循环包含的问题
3》#import《》用于包含系统自带的文件,#import“”用来包含自定义的文件
7属性readwrite ,readonly,assign,retain,copy,nonatomic,各是什么作用?在那种情况下使用?
readwrite:同时生成get 方法和set方法的声明和实现
readonly:只生成get方法的声明和实现
assign:set方法的实现是直接赋值,用于基本数据类型
retain:set的方法的实现是release旧值,retain 新值,用于oc对象类型
5=copy:set方法的实现是release旧值,copy新值,用于nesting,block等类型
nonatomic:非原子型,set方法的实现不加锁