在iOS 4开发中,@class是用来声明一个类的。

11 浏览
0 Comments

在iOS 4开发中,@class是用来声明一个类的。

在appdelegate.h中,做

@class MyViewController;

和普通地导入.h文件有什么区别吗?

#import "MyViewController.h"

最近我看到一些例子使用了@class的方式,想知道是否有任何区别。

谢谢。

0
0 Comments

在iOS 4开发中,使用@class的作用是进行前向声明。当你只需要告诉编译器一个对象的类型,但不需要包含头文件时,可以使用前向声明。然而,如果你需要创建一个该类型的对象并调用其方法,你需要在.m文件中使用#import "MyViewController.h"来引入头文件。

前向声明的另一个用途是在同一个头文件中定义一个对象时,该对象需要使用一个协议。在上面的示例中,编译器需要在编译MyObject对象之前知道MyProtocolDelegate是有效的。将协议定义移动到MyObject定义之上也可以解决此问题。

因此,当你需要告诉编译器一个对象的类型而不需要包含头文件,或者在同一个头文件中定义一个对象和使用它的协议时,可以使用@class。

0
0 Comments

在iOS 4开发中,@class的作用是声明一个符号是Objective-C类名,而不需要#import引入定义该类的头文件。这在你只需要定义类名以声明一个指向该类的指针或类的方法参数时会用到,而且你不需要访问该类中的任何方法、字段或属性。

它比使用#import导入头文件节省了一点编译时间,并且有时它可以避免混乱的包含循环问题。

此外,正如rjstelling指出的,当你有交叉声明并且需要“前向声明”某些内容时,@class有时也很有用。

因此,使用@class可以在声明类名时不需要导入头文件,避免了编译时间的浪费和包含循环的问题。

0