我正在开发一个包含多个自定义类的项目。我有一个CardModel
(NSObject) 具有一些整数属性来保存数据,以及Deck
(NSObject) 有一个数组可以容纳一堆CardModels
然后一个CardView
(UIView) 有一个CardModel
作为我选择时创建的属性CardModel
from a Deck
。然后我有一堆UIViewControllers
我在UINavigationController
.
我的问题是何时何地使用@class
编译器指令。
如果我子类化一个UIViewController
通过创建一个新文件并对其进行子类化,我应该使用@class MyViewController
在标题中MyViewController.h
or .m
它是否位于实际使用控制器的文件的标头中(例如当一个控制器要实例化另一种控制器类型并将其推入堆栈时)。或者我是否需要使用它?仅当我实际上向我的类添加了超出库存实现中的新属性时才需要它吗?看来我要放@class
到处都是,只是确保我不会出错,但我从根本上不明白我什么时候需要它。
Thanks!
您可以在 .h 中使用它来通知它有关自定义类的信息,而无需包含自定义类的 .h。
例子:
两个自定义类别:汽车和车轮
Car.h
----------------
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end
Car.h 不知道“Wheel”类,因此它会抛出错误,因此您可以像这样导入 Wheel.h:
Car.h
----------------
#import "Wheel.h"
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end
但你也不需要这样做。 Car.h 不需要了解有关 Wheel 类的任何信息,它只需要知道它存在即可。所以你使用 @class 来表达“嘿,这个类存在。相信我的话。”
Car.h
----------------
@class Wheel;
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end
然后在 Car.m 内部,当您实际上需要了解 Wheel 类(属性、方法等)时,您应该在那里导入 Wheel.h。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)