我有MyClassA
,其属性类型为MyClassB
//
// MyClassA.h
//
@interface MyClassA : NSObject
@property (strong, nonatomic, readonly) MyClassB *myClassB;
@end
MyClassB
具有属性myString
。//
// MyClassB.h
//
@interface MyClassB : NSObject
@property (copy, nonatomic, readonly) NSString *myString;
@end
我有
MyClassC
,它需要在实现中访问myString
。我是不是该 -
a)转发声明
MyClassB
中的MyClassA.h
和#import "MyClassB.h"
中的MyClassC.m
或
b)
#import MyClassB.h
中的MyClassA.h
最佳答案
通常,应在头文件中尽可能使用@class
进行转发声明。您唯一不希望这样做的时间是当您从父类(super class)继承或声明协议(protocol)一致性时,因为编译器需要知道该类或协议(protocol)中发生的事情。
对于此实例,我将在您的头文件中的所有属性声明中使用@class,在MyClassC.m文件中的#import MyClassB.h
中使用@class。这将使MyClassC知道MyClassB上的所有属性。
关于objective-c - 子类化时,前向声明vs #import,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39280227/