CIF*_*ter 7 import class objective-c forward-declaration
我很清楚,一般的经验法则是你应该只导入必要的 - 基类接口,协议接口等 - 用于编译和使用@class可以向前声明的所有内容的类.但是,我遇到了以下情况,我觉得这#import是一个更合适的解决方案:
#import "ClassA.h" // Previously, @class ClassA;
#import "ClassB.h" // Previously, @class ClassB;
#import "ClassC.h" // Unnecessary to forward-declare
@interface ClassD : NSObject
@property (nonatomic, retain) ClassA * classAObject;
@property (nonatomic, retain) ClassB * classBObject;
@property (nonatomic, copy) NSArray * classCObjects;
@end
Run Code Online (Sandbox Code Playgroud)
起初,我只是向前声明ClassA和ClassB(作为的成分classCObjects是ClassC由合同只).这是我最初的直觉.
但是,试图使用后ClassD在其他地方,我很快就意识到,我必须也进口ClassA,ClassB和ClassC沿着ClassD到处我用它.这似乎是另一个类在使用时不应该关心的东西ClassD.我的想法是,基本上,一个用户ClassD应该真的只关心导入ClassD.h并假设它可以在没有一堆其他#import语句的情况下使用整个类.鉴于上述方法,我基本上已经包含了ClassD在其界面中正确的域内工作所需的一切.
是否有一个强有力的理由说明这种方法并不理想,除了"你所包含的内容不仅仅是编译所必需的?"
Ben*_*tto 10
虽然你通常遵循的策略 - 不要输入超过必要的 - 是令人敬畏的,优雅的风格和一般的目标,不要过多地惹恼棘手的案件.只是#import你需要什么.
实际上,在现代机器上,唯一的影响#import是在编译时添加一些不可观察的微秒.使用您节省的开发人员时间,使您的应用程序更加美观.:)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |