Tôi biết rằng quy tắc chung là bạn chỉ nên nhập những gì cần thiết — giao diện lớp cơ sở, giao diện giao thức, v.v. —cho một lớp để biên dịch và sử dụng @class
cho mọi thứ có thể được tuyên bố trước. Tuy nhiên, tôi chạy vào kịch bản sau đây trong đó tôi có cảm giác như #import
là một giải pháp thích hợp hơn:Có luôn luôn không thích hợp để # import nhiều hơn mức cần thiết tuyệt đối trong các giao diện Objective-C không?
#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
Lúc đầu, tôi chỉ đơn giản là chuyển tiếp tuyên bố ClassA
và ClassB
(như các thành phần của classCObjects
là của ClassC
chỉ theo hợp đồng). Đây là bản năng ban đầu của tôi.
Nhưng sau khi cố gắng sử dụng ClassD
nơi khác, tôi nhanh chóng nhận ra rằng tôi cũng đã nhập khẩu ClassA
, ClassB
, và ClassC
cùng với ClassD
ở khắp mọi nơi tôi đã sử dụng nó. Điều này có vẻ giống như một cái gì đó mà một lớp khác không nên quan tâm khi sử dụng ClassD
. Suy nghĩ của tôi là, về cơ bản, người dùng của ClassD
thực sự chỉ nên quan tâm đến việc nhập ClassD.h
và giả sử nó có thể hoạt động với toàn bộ lớp mà không có một loạt các tuyên bố khác #import
. Với cách tiếp cận trên, về cơ bản tôi đã bao gồm mọi thứ cần thiết để hoạt động trong miền ClassD
ngay trong giao diện của nó.
Có lý do chính đáng khiến cách tiếp cận này không lý tưởng, ngoại trừ "bạn đã bao gồm nhiều hơn là hoàn toàn cần thiết cho việc biên soạn?"
+1: những gì tôi đang trong quá trình nói, nhưng nói tốt hơn :) – Mac
Đó là những gì tôi nhận ra, nhưng tôi muốn đảm bảo rằng tôi không vi phạm một số hiệu trưởng thiết kế quan trọng hơn. Làm việc cho tôi. :) – LucasTizma
'# import' có thể là cải tiến tốt nhất so với thẳng C mà Obj-C cung cấp. ;) Sử dụng nó, yêu nó, và không đổ mồ hôi nó. Đó là cách tôi lăn, dù sao đi nữa. Chúc may mắn. –