我有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/

10-11 04:40