Tôi đang thiết kế một thư viện tĩnh iOS sẽ được các nhà phát triển khác sử dụng. Thư viện này cần cung cấp giao diện người dùng phương thức riêng. Tôi đang tìm cách đơn giản nhất để thiết kế giao diện giữa ứng dụng và thư viện này để thực hiện việc này. Tôi chỉ cần hỗ trợ iOS 4.0 trở lên.Cách đơn giản nhất để thiết kế một thư viện tĩnh iOS cung cấp giao diện người dùng phương thức riêng của nó là gì?
kiến trúc Rough
thư viện tĩnh của tôi có một API rất đơn giản với một lớp. AppDelegate của ứng dụng sẽ khởi tạo một lớp này và đặt chính nó làm đại biểu để nó có thể nhận thông báo. Khi ứng dụng muốn thư viện hiển thị giao diện người dùng của nó, nó gọi một phương thức duy nhất, và sau đó khi thư viện được thực hiện với công việc của nó, nó sẽ gửi thông báo qua một trong các phương thức của giao thức đại biểu.
Tôi có thể thấy hai cách để thực hiện việc này.
Lựa chọn 1
Khi ứng dụng muốn thư viện để hiển thị giao diện của nó, The appdelegate đi trong self.window, và thư viện bộ điều khiển xem gốc riêng của mình, tham gia có hiệu quả quyền sở hữu đầy đủ các giao diện người dùng. Khi giao diện người dùng kết thúc, nó sẽ thông báo cho AppDelegate, sau đó đặt bộ điều khiển chế độ xem gốc của chính nó trên cửa sổ, lấy lại quyền sở hữu của giao diện người dùng.
Lựa chọn 2
Thư viện cho thấy một bộ điều khiển xem, mà ứng dụng có thể đẩy lên bất cứ điều gì nhìn chồng nó thích. Ứng dụng này cũng chịu trách nhiệm xóa bộ điều khiển chế độ xem khi thư viện thông báo rằng giao diện người dùng đã hoàn tất.
vấn đề
Với tùy chọn 1, có thể có vấn đề thay đổi xem gốc điều khiển trong khi ở giữa chạy một ứng dụng. Với tùy chọn 2, có thể có sự cố khi cung cấp bộ điều khiển chế độ xem có thể hoạt động trong ngữ cảnh tùy ý (dưới dạng trình điều khiển chế độ xem toàn cửa sổ, dưới dạng chế độ xem phụ của UINavigationController, v.v.).
Một vấn đề khác với cả hai tùy chọn là các thông báo UIApplicationDelegate khác mà AppDelegate có thể nhận được, chẳng hạn như applicationWillResignActive: và applicationDidBecomeActive :. Thư viện có thể cần xử lý các thông báo như vậy để duy trì đúng giao diện người dùng của nó. Phải AppDelegate chuyển từng cái này vào thư viện khi giao diện người dùng của nó hoạt động không?
Có tùy chọn nào tốt hơn mà tôi chưa từng nghĩ đến không?
Chúng ta có cần phải viết mã này trong lớp NSObject –
Khá nhiều mọi lớp bạn đưa vào đều được lấy từ NSObject và nó phải là mã ObjectiveC, vì vậy tôi không chắc tôi hiểu câu hỏi của bạn. Lưu ý rằng đây là> 2 tuổi nên không chắc chắn nếu điều này vẫn còn hợp lệ. – Dad
Tnx để trả lời mã của bạn đang hoạt động tốt. Đó là một sai lầm trong mã của tôi. mã tuyệt vời nó tiết kiệm thời gian của tôi rất nhiều .. –