2012-06-13 38 views
5

Screenshots"Không thể tìm thấy lời tuyên bố giao diện cho <class>"

Tôi đang gặp khá một thời gian khó thiết lập một thể loại trên lớp tôi thực hiện. Từ những gì tôi đã đọc, Objective-C cho phép bạn tạo một danh mục trên bất kỳ lớp nào, không chỉ các lớp đóng. (Thật sự nó sẽ không có ý nghĩa gì theo cách khác.)

Tất nhiên tôi có thể thêm thư mục vào tệp lớp thực tế, nhưng tôi muốn giữ chúng riêng biệt (vì danh mục là cách sử dụng đặc biệt không thường xuyên của một lớp có thể được sử dụng rất thường). Tôi muốn chia sẻ các lớp học, nhưng giữ cho các thể loại tư nhân ... anyway.

Tôi đã loại bỏ danh mục để chỉ hiển thị sự cố ngay. Tôi (hiện tại) nhận được bốn lỗi trên thông báo danh mục đầu tiên. Số lỗi mà tôi nhận được trên dòng đó là tỷ lệ thuận với số lần tham chiếu, nhưng nó không phải là một sự gia tăng thậm chí. Có ai biết nguyên nhân của vấn đề này là gì không?

+0

Nội dung bạn đã viết có vẻ đúng với tôi. Tôi đã làm những điều tương tự trong mã của tôi. Tôi đoán là có lẽ đây là một số vấn đề khác gây nhầm lẫn cho trình biên dịch. Ví dụ: "ByteCollection.h" có một @end thích hợp trong đó không? Hoặc có bất cứ điều gì khác có thể sai với "ByteCollection.h" hoặc bất cứ điều gì nó bao gồm? – user1118321

+0

Không phải tôi có thể thấy; Xcode không chỉ ra bất cứ điều gì và tôi thực hiện toàn bộ giao diện. Chính xác những gì dictates một 'thích hợp @end'? –

+3

Một khả năng khác là trình biên dịch không tìm thấy "ByteCollection.h" khi bạn nhập nó. Nếu tệp đó nằm trong một thư mục khác (trong hệ thống tệp, không nằm trong thư mục "nhóm" màu vàng của Xcode), bạn có thể cần thiết lập đường dẫn tìm kiếm trong cài đặt dự án để có thể tìm thấy nó. – rickster

Trả lời

6

Tệp Resources.h của bạn, được nhập bởi ByteCollection.h, nhập ByteCollection + words.h. Vì vậy, khi ByteCollection + words.h nhập ByteCollection.h, kết quả này phụ thuộc vào vòng tròn †. Cách đơn giản nhất để phá vỡ một phụ thuộc vòng tròn là di chuyển một trong các mục nhập vào tệp triển khai thay vì tiêu đề. Có vẻ như điều này sẽ có thể với Resources.h.

† Bạn có thể thắc mắc, tại sao lại là vấn đề nếu bạn có phụ thuộc vòng tròn? Vâng, chỉ thị #import theo nghĩa đen chỉ là văn bản bao gồm tệp bạn chỉ định, giống như khi bạn sao chép-dán. Nó cũng thông minh không bao gồm một tệp hai lần, bởi vì điều đó sẽ tạo ra mã trùng lặp. Nhưng điều này có nghĩa là khi File A nói "Tôi muốn File B đi trước tôi" và File B nói "Tôi muốn File A đi trước tôi", một trong số họ sẽ thất vọng và dẫn đến lỗi như bạn đang ở đây.

+0

Có, nó nhập khẩu 'ByteCollection + Words.h', nhưng tôi đã có vấn đề với sự bao gồm vòng trước và sẽ không bao giờ gãi đầu của tôi cho sai lầm đó một lần nữa! XD Không có vấn đề bao gồm thông tư. Tôi thậm chí không bao giờ nhập 'Resources.h' ở bất kỳ đâu trong tệp nguồn của tôi. (Được sử dụng để, nhưng không nữa.) Tôi thậm chí còn nhận xét việc nhập khẩu cụ thể cho các biện pháp tốt không có hiệu lực. Cảm ơn mặc dù :) –

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