2012-05-07 20 views
7

Tôi đang cố gắng thực hiện một số hoạt ảnh trên một đối tượng mà tôi đã thiết lập qua IB. Tôi thêm một tuyên bố mong muốn .h tôi như vậy:iOS - nhập khẩu và chuyển tiếp tuyên bố liên quan đến setAlpha

@class MySpecialClass; 

và sau đó thiết lập một tài sản như sau:

@property (nonatomic, retain) IBOutlet MySpecialClass *specialClass; 

Tôi muốn có thể để ẩn specialClass sử dụng setAlpha, nhưng tôi nhận được lỗi sau từ xcode khi cố gắng biên dịch.

Receiver type 'MySpecialClass' for instance message is a forward declaration. 

Tôi có cần phải nhập lớp học thay vì khai báo chuyển tiếp không? Tôi không muốn nhập bất cứ thứ gì không cần thiết nếu tôi không phải làm vậy.

Trả lời

44

Tuyên bố chuyển tiếp chỉ nói với trình biên dịch, "Này, tôi biết tôi đang tuyên bố thứ mà bạn không nhận ra, nhưng khi tôi nói @ MyClass, tôi hứa rằng tôi sẽ #import nó trong việc thực hiện ".

Bạn sử dụng tờ khai phía trước để ngăn chặn những thứ như hình tròn bao gồm (MyClass nhập khẩu YourClass mà nhập khẩu MyClass mà ...), nhưng 'hứa hẹn' bạn thực hiện với mã của bạn, là bạn sẽ #import nó sau

+4

Một trong những giải thích tốt nhất và ngắn gọn nhất mà tôi đã đọc - được thực hiện tốt. Tôi sẽ bầu cho bạn nhiều hơn nếu có thể. – BonanzaDriver

+1

tôi cuối cùng đã hiểu tuyên bố về phía trước, cảm ơn :) – dreampowder

5

Bạn cần nhập. Tuyên bố chuyển tiếp chỉ là để im lặng trình biên dịch mà lớp này tồn tại, nhưng nó không có ý tưởng về các thành viên, phương pháp, tài sản, kích thước ...

+9

Tuy nhiên, việc nhập có thể được thực hiện trong tệp .m. Mẫu thông thường là khai báo chuyển tiếp trong .h, nhập vào .m. – jrturton

+0

Vâng, đúng vậy. – graver

Các vấn đề liên quan