可能重复:
@class vs. #import
我对此非常困惑,编写@classname&的区别是什么? #import“classname.h”。什么时候去@classname?
答案 0 :(得分:1)
答案 1 :(得分:0)
@classname
是forward declaration
。没有任何东西被导入,它只是在编译器中输入, 类将在运行时存在。
#import
实际上会导入其他类 - >你可以把它想象成复制到文件中。所以导入的类将在编写它之前编译。
答案 2 :(得分:0)
@classname
只是告诉编译器类classname
存在。
#import
确实导入了头文件,因此编译器不仅知道它存在,而且还知道它的外观。 (像伊娃,方法等......)
答案 3 :(得分:0)
@classname只是让编译器知道该类存在,但是你仍然需要导入相应的.h。您可以使用.h中的@classname然后在.m中导入类,这样可以避免循环引用。您可以在Apple Docs
了解更多相关信息答案 4 :(得分:0)
@className
指令以克服类的循环引用,它也称为前向声明
@class
只会通知编译器有一个名为“@className yourClass”的类,无需担心该类,并且在运行时它只是引用该类并执行。
#import "className"
将保留该特定类的副本。