Có một sự khác biệt lớn.
@class MyViewController;
Là tờ khai chuyển tiếp cho đối tượng MyViewController
. Nó được sử dụng khi bạn chỉ cần nói cho trình biên dịch về một kiểu đối tượng nhưng không cần phải bao gồm tệp tiêu đề.
Tuy nhiên, nếu bạn cần tạo một đối tượng của loại hình này và gọi các phương pháp trên đó, bạn sẽ cần phải:
#import "MyViewController.h"
Nhưng thường này được thực hiện trong các tập tin .m
.
Việc sử dụng bổ sung các tờ khai chuyển tiếp là khi bạn xác định @protocol
trong cùng một tệp tiêu đề làm đối tượng sử dụng nó.
@protocol MyProtocolDelegate; //forward declaration
@interface MyObject {
id<MyProtocolDelegate> delegate;
...
}
...
@end
@protocol MyProtocolDelegate
... //protocol definition
@end
Trong ví dụ trên trình biên dịch cần phải biết rằng @protocol MyProtocolDelegate
là hợp lệ trước khi nó có thể biên dịch đối tượng MyObject
.
Chỉ cần di chuyển định nghĩa giao thức ở trên định nghĩa MyObject
cũng sẽ hoạt động.
có thể câu hỏi tương tự này có thể giúp: [http://stackoverflow.com/questions/322597/class-vs-import](http://stackoverflow.com/questions/322597/class-vs-import) –