有谁能解释一下@class个声明在Objective-C中的作用,以及我们应该在哪些情况下使用该声明?

推荐答案

这是一份前瞻性声明.它本质上告诉编译器有一个同名的类.我在接口声明中使用它:

@class Foo;
@interface Bar : NSObject {
    Foo *someFoo;
}
@end

当然,您可以导入Foo的标题:

#import "Foo.h"
@interface Bar : NSObject {
    Foo *someFoo;
}
@end

但如果someFoo不向Bar的用户公开,他们会导入一个对他们没有用处的额外头文件.对于@class声明,Bar的用户看不到额外的导入,因为Foo.h将被导入Bar的实现文件中.

Objective-c相关问答推荐

如何从 Cocoa 的 NSDictionary 中获取特定键的值?

uipageviewcontroller 类在设置多个视图控制器时崩溃

在 Objective C 中将属性标记为已弃用

让 iPhone sleeping

如何在 Cocoa 中创建字符串的 MD5 哈希?

UILabel:你如何设置字体大小?

如何将 NSMutableArray 中的字符串按字母顺序排序?

UISearchbar 键盘搜索按钮操作

在 Xcode 中为无法识别的 Select 器创建断点

静态和动态单元格的 UITableView 混合?

我可以以编程方式滚动到 UIPickerView 中所需的行吗?

自定义 UISwitch 和 App Store 批准

iOS - 从应用程序获取 CPU 使用率

委托如何在 Objective-C 中工作?

显示启动画面的时间超过默认秒数

UITableViewCell 右侧有图像?

如何在 UIAlertController 中添加 textField?

如何减小使用 UIImagePickerController 创建的视频的文件大小?

Objective-c - CABasicAnimation 在动画后应用更改?

UIScrollView contentSize 不起作用