#import与#include、@class有什么区别?
#import与#include都是用来引入头文件的,与#include相比,Objective-C中#import的优势是不会重复引入头文件,相当于多了C/C++中#pragma once的作用,它可以保证头文件只被编译一次。
@class相当于 只是在头文件声明一下要用到的类的头文件(前向声明),告诉编译器有这样一个类的定义但暂时不要将类的实现引入,让该类定义的变量能够编译通过,直到运行起来时才去查看类的实现文件。但实际上这样也只能起到在头文件声明该实例变量的作用,在.m文件中,如果用到该类的实现细节(属性和方法),那么还是要通过#import再次引入类的头文件。使用@class的好处是将头文件的引入延迟了,至少延迟到了.m实现文件中,这样符合“直到真正用到的时候在确定引入”的动态思想,尽量往后拖延,更重要的是这样也可以有效地避免头文件的重复引入甚至循环引用等问题。
#import< >与#import""又有什么区别?
#import<>与#import""的区别和C/C++中#include<>与#include""的区别一样:使用尖括号<>指的是用来引入系统的头文件,而使用引号""指的是用来引入本地用户的头文件,如果在本地文件中没找到头文件,那么会去系统文件中查找头文件。