我有以下代码
#import <UIKit/UIKit.h>
#import "SecondLevelViewController.h"
@class DisclosureButtonController;
@interface DisclosureButtonController : SecondLevelViewController {
NSArray *list;
DisclosureButtonController *childController;
}
@property (nonatomic, retain) NSArray *list;
@end
我无法得到什么
@class DisclosureButtonController;
的装置。
任何人都可以向我解释一下吗?
答案 0 :(得分:3)
它只是告诉编译器DisclosureButtonController
是在其他地方定义的Class
。
如果你删除它,你应该在DisclosureButtonController *childController;
得到一个错误,因为编译器不知道你希望他在这一行做什么。
来自Apple Doc Defining a class
@class指令最大限度地减少了编译器和链接器看到的代码量,因此是提供类名前向声明的最简单方法。简单,它避免了导入导入其他文件的文件时可能出现的潜在问题。例如,如果一个类声明另一个类的静态类型实例变量,并且它们的两个接口文件相互导入,则两个类都不能正确编译。
@class
指令在那里是多余的,因为你在下一行声明了这个类。也许有一个@protocol
在@class
和@interface
之间使用了该类。但在您的特殊情况下,您可以毫无问题地删除它。这是多余的。