2013-06-25 26 views
5

Tôi viết một lớp wrapper mà sử dụng thời gian chạy động để chuyển tiếp các thông điệp đến đối tượng bọc, sử dụng forwardInvocation:Vô hiệu hóa tổng hợp thuộc tính tự động Objective-C cho một lớp học?

Tuy nhiên, kiểm tra loại tại phàn nàn rằng phương pháp này không thực hiện trên lớp wrapper của tôi, mà nói chung là tốt Điều.

Vì vậy, tôi nghĩ tôi sẽ viết một số khai báo phương thức trong tiêu đề của trình bao bọc của tôi để đáp ứng trình kiểm tra loại. Lưu ý rằng tôi chỉ muốn các khai báo chứ không phải các định nghĩa.

Tuy nhiên, khi tôi sao chép các chỉ thị @property của mình, chúng không chỉ được khai báo mà còn được xác định là tốt và theo cách này, chúng được ưu tiên hơn chuyển tiếp phương thức và do đó chuyển tiếp chuyển tiếp.

Vì vậy, có cách nào để khai báo @property và không tự động tổng hợp getters và setters không? Tôi thích tính năng này vì vậy tôi muốn vô hiệu hóa trên cơ sở mỗi lớp, và để nó cho phần còn lại của dự án. Một chút như -fno-objc-arc.

P.S. clang -v =>$ Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)

Trả lời

6

Nếu bạn thêm

@dynamic yourProperty; 

đến việc thực hiện lớp thì không có biến dụ và không có chức năng accessor sẽ được tổng hợp cho tài sản đó.

+0

Thật không may điều này không tạo ra một cảnh báo duy nhất về việc thiếu phương thức truy cập và ứng dụng sẽ bị lỗi khi truy cập vào thuộc tính. – Ernest

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