私は親指の一般的なルールは、あなたが唯一の必要なベースクラスのインタフェース、プロトコル・インタフェースなど-のためのフォワード宣言することができますすべてのために@class
をコンパイルして使用するためのクラスが何であるかをインポートする必要があることを十分承知しています。 classCObjects
の成分のみ契約によってClassC
であるように、第1に、私は単に(ClassA
とClassB
を前方宣言Objective-Cインターフェイスで絶対に必要以上に#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
:しかし、私は#import
がより適切な溶液であったように私が感じた以下のシナリオに遭遇しました)。これは私の最初の本能でした。
しかし、他の場所でClassD
を使用しようとした後、私はすぐに私も、どこでも、私はそれを使用ClassD
とともにClassA
、ClassB
、およびClassC
を輸入しなければならなかったことに気づきました。これは、ClassD
を使用するときに気にする必要のない別のクラスのようなものです。私の考え方は基本的に、ClassD
のユーザーが実際にのみClassD.h
のインポートを気にし、それが他の#import
文の束なしでクラス全体を操作でき想定する必要があり、ということでした。上記のアプローチを考えると、私は基本的に、そのインターフェイスにClassD
というドメイン内で作業するために必要なすべてを含んでいます。
このアプローチが理に適っていない理由は、「コンパイルに絶対必要以上のものが含まれていますか?
1:私が言っての過程にあったが、私の実現だったものですより良い:) – Mac
を言ったが、私は結果として、いくつかのより重要な設計校長に違反していなかったことを確認したかったです。私のために働く。 :) – LucasTizma
'#import'は、Obj-Cが提供するストレートCよりも単一の最善の改善であるかもしれません。 ;)それを使用して、それを愛し、それを汗をかまないでください。とにかく、私はそれがどのように転がります。がんばろう。 –