基础知识(重点)
1> #include,#import,@classd这三者的区别
1) #include
#include :它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件.
#include "xx.h": 后面“ ” ,表示用户自定义的文件
对用户自定义的文件的引用,编译器首先会去用户目录下查找,然后去安装目录,最后去系统目录查找
注意:使用include要注意重复引用的问题:(这也是c语言中#include与oc#import的区别,因为import会自动检测是否有包含。)
2) #import
#import 功能和#include是一样的,解决重复引用的问题,引用文件的时候不用进行重复引用处理。所以在OC中我们基本用的都是import。
3) @class
主要是用于声明一个类,告诉编译器它是一个类的名字,但是类是如何实现的不用告诉编译器.若.m文件用到了这个类,还是要在.m文件汇总import这个类的。@class仅仅只是声明一个类,所以在后面的实现文件里面是需要去#import这个类,这时候才包含了这个被引用的类的所有信息。
既然这样,为什么不直接用import呢,
经典例子:
class A引用了class B,class B引用了class C.... , class A,B,C...的头文件又引用了import的很多文件。连续引用。
那么 import要去引用A的话,编译器就需要编译大量的文件一个一个的找,那么编译时间就会增加很多。多么耗费性能啊。
2>方法与函数的区别:
1)方法:
1 都是以减号开头
2 对象方法的声明必须写在@interface和@end之间
3 对象方法的实现,必须写在@implementation和@之间
4 对象方法只能由对象方法调用
5 对象方法由类或对象所有
2)函数:
1 函数能写在文件中的任意位置,函数归文件所有
2 函数的调用不依赖于对象
3 函数内部不能直接通过成员变量访问某个对象的成员变量。