Tôi đang sử dụng một số phần mềm của bên thứ ba để hỗ trợ viết ứng dụng iPad bằng Xcode 4.3.2. Phần mềm này là mã nguồn mở và thường được thiết lập để mã của nó sẽ được biên dịch cùng với bất kỳ mã nào mà nhà phát triển viết cho ứng dụng. Bởi vì tôi đã sử dụng phần mềm ở nhiều nơi, tôi quyết định xây dựng nó như một thư viện tĩnh cho trình mô phỏng iOS.Phương pháp danh mục chọn cuộc gọi không được nhận dạng trong thư viện iOS tĩnh
Tôi có thể xây dựng thư viện và chuyển đổi một ứng dụng để liên kết đến thư viện đó thay vì biên dịch mã nguồn gốc. Tuy nhiên, khi tôi chạy ứng dụng trên trình giả lập, tôi nhận được thông báo lỗi, bộ chọn không được nhận dạng được gửi đến ví dụ.
Tôi đã xác minh rằng chương trình đang sử dụng thành công các phần của thư viện tĩnh. Tuy nhiên, có một đoạn mã cố gắng gọi một phương thức trên một đối tượng, và nơi xảy ra lỗi. Phương thức được gọi là không thực sự được định nghĩa trong giao diện của đối tượng đó. Thay vào đó nó được cung cấp trong một mô-đun bổ sung định nghĩa một thể loại cho lớp của đối tượng đó. Các tập tin tiêu đề cho mô-đun đó được bao gồm đúng và trình biên dịch nên đã có thể tìm thấy phương pháp thể loại và áp dụng nó cho đối tượng, nhưng tại thời gian chạy, lỗi đã đề cập ở trên xảy ra.
Tôi đã sử dụng lệnh 'nm' để xác minh rằng phương thức danh mục tồn tại trong thư viện tĩnh. Dưới đây là ví dụ về đầu ra:
nm libStaticLibrary.a | grep categoryMethod
00000130 t -[SomeClass(Category) categoryMethod:]
0000354c s -[SomeClass(Category) categoryMethod:].eh
Mọi người có ý tưởng gì về cách thư viện này hoạt động chính xác với ứng dụng mong muốn?
Thêm -ObjC cờ mối liên kết như đã giải thích ở đây: http: // stackoverflow .com/questions/2567498/objective-c-categories-in-static-library –
-load_all cũng hoạt động. – CodaFi
có thể trùng lặp của [danh mục liên kết mục tiêu c trong thư viện tĩnh] (http://stackoverflow.com/questions/6820778/linking-objective-c-categories-in-a-static-library) –