2012-04-21 32 views
5

Tôi đang làm việc trên một dự án quy mô lớn trên iOS và tôi muốn tách các mô-đun độc lập thành một số gói có thể tải. Tuy nhiên, tài liệu chính thức cho biết rằng gói có thể tải không được hỗ trợ trên iOS. Ngoài ra, tôi dự định sử dụng phân phối nội bộ, do đó, phê duyệt cửa hàng ứng dụng không phải là vấn đề.Gói có thể tải trên iOS, có cách nào để đạt được điều này không?

Bây giờ câu hỏi của tôi là: Tôi gọi [_bundle principalClass] trong mã để truy cập lớp nhập của gói có thể tải. Nó hoạt động tốt trên các thiết bị iOS được bẻ khóa. Đối với các thiết bị không được giải mã, khi tôi sử dụng chế độ gỡ lỗi với Xcode, nó cũng hoạt động tốt. Nhưng khi tôi chạy nó một cách độc lập, từ bàn đạp, nó rơi xuống nền.

Tôi thực sự muốn biết:

1) Tại sao nó là như vậy khác nhau cho bó loadable chạy trên thiết bị jailbroken/unjailbroken?
2) Sự khác biệt lớn giữa chế độ gỡ lỗi XCode và chế độ chạy bình thường cho ứng dụng?

Có cách nào khác để sử dụng thư viện động trên các thiết bị iOS không được giải mã không?

Trả lời

1

iOS không cho phép tải tất cả các mã thực thi động mà không phải là một phần của hệ thống; Điều này bao gồm Framework, dylibs, các trang bộ nhớ thực thi sử dụng mmap, vv Hy vọng rằng một ngày nào đó chúng sẽ cho phép các gói động, nhưng trong thời gian này bạn sẽ cần phải xây dựng các mô-đun của bạn như các thư viện tĩnh và liên kết với chúng tại thời gian xây dựng. Không có cách nào biết xung quanh giới hạn này.

Rất nhiều người đã viết về cách thực hiện việc này (ví dụ: http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/) hoặc bạn có thể muốn sử dụng dự án hiện tại làm ví dụ. Thứ mà tôi thích là API GData objc, có mục tiêu cho cả khung động khi được xây dựng cho OS X và thư viện tĩnh khi xây dựng cho iOS: http://code.google.com/p/gdata-objectivec-client/

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