2015-08-06 22 views
6

Tôi đang gặp sự cố khi tạo một thứ gì đó trong Swift thuần túy. Tôi đang cố gắng thực hiện một đăng ký của các lớp học tương tự như NSValueTransformer.Có tương đương Swift với GCC `__attribute __ ((constructor))` không?

Trong mục tiêu-C, tôi đảm bảo rằng các lớp con NSValueTransformer đã được đăng ký bằng cách gọi setValueTransformer:forName: trong phương thức lớp học load của lớp con. Cách tiếp cận này không hoạt động trong Swift vì thời gian chạy không gọi là load trên các lớp Swift.

Ý tưởng tiếp theo của tôi là tìm phiên bản Swift __attribute__((constructor)) nhưng tìm kiếm của tôi bị trống. Swift có cung cấp một cái gì đó giống như __attribute__((constructor)) hoặc là cách duy nhất để đạt được điều này để viết một hàm C gọi một hàm Swift?

+0

Bạn đã tìm thấy giải pháp cho câu hỏi của bạn? Tôi cũng có nhu cầu tương tự. cảm ơn trước –

Trả lời

0

Nếu đăng ký lớp học của bạn được gói trong một gói, bạn có thể sử dụng lớp chính của gói để tìm và đăng ký máy biến áp. Nếu không, bạn có thể sử dụng ứng dụng của AppDelegate đã hoàn thành việc khởi chạy gia đình phương pháp để làm điều đó.

Dù bằng cách nào, bạn sẽ cần phải tìm kiếm qua tất cả các lớp và đăng ký những lớp bạn muốn. Mục tiêu-C có tốt đẹp objc_getClassList() để thực hiện điều này, cho Swift tôi tìm thấy một gist thú vị mà thêm chức năng này để Swift: https://gist.github.com/bnickel/410a1bdc02f12fbd9b5e

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