2011-10-28 34 views
6

Tôi đang điều tra tích hợp Newsstand vào ứng dụng iOS mới và muốn biết liệu tôi có thể thực hiện điều này theo cách vẫn cho phép ứng dụng chạy trên các thiết bị chưa di chuyển sang iOS 5 hay không.Tích hợp Newsstand mà không vi phạm khả năng tương thích ngược

Có ai có thể cho tôi một số phản hồi về cách kiến ​​trúc sư ứng dụng xử lý việc này không?

Tôi biết có thể có một ứng dụng duy nhất với các mục tiêu và tập hợp tệp nguồn khác nhau, nhưng tôi muốn giữ cho hệ thống mã hóa càng thống nhất càng tốt và kiểm tra các tính năng của Newsstand theo cách động.

Trả lời

5

Trước tiên bạn phải làm gì để liên kết yếu ứng dụng của bạn với khung NewsstandKit. Điều này tránh được rằng một thiết bị có phiên bản iOS < 5 sẽ bị lỗi do các thư viện bị thiếu. Khi đó bạn có thể sử dụng các phương thức như NSClassFromString() hoặc các tính năng thời gian chạy obj-c khác, cho phép bạn sử dụng các phương thức NK và tham chiếu đến các lớp NK mà không có sẵn trong iOS < 5. Trong trường hợp này, bạn có thể sử dụng các phương thức như NSClassFromString() hoặc các tính năng thời gian chạy obj-c khác phát hiện tự động sự tồn tại của các tính năng này.

Một đề xuất mà tôi có thể làm trong trường hợp này là cung cấp chỉ thị tiền biên dịch cho phép bạn cách ly tất cả các nội dung của Newsstand ở cấp biên dịch. Bằng cách này, bạn có thể thử biên dịch bằng SDK 4 (nếu có) và xem lỗi trình biên dịch hoặc cảnh báo.

Ví dụ: nếu bạn thêm trong Prefix.pch bạn một định nghĩa như thế này


#define WILL_USE_NK 

sau đó bạn có thể đặt dấu ngoặc tất cả các tài liệu tham khảo NK theo cách này:


#ifdef WILL_USE_NK 
... your NK statements go here ... 
#endif 

Sau đó, khi bạn sẽ biên dịch các ứng dụng với SDK4 bạn giữ này định nghĩa, do đó bạn sẽ có một bộ biên dịch SDK4 thực hợp lệ cho các thiết bị iOS4 (mà bạn có thể kiểm tra) và bạn sẽ chắc chắn rằng tất cả các tham chiếu NK của bạn không được ứng dụng iOS4 sử dụng. Sau đó, bạn phải #undef định nghĩa này và biên dịch với SDK5 (tất nhiên giữ một số iOS 4.x là mục tiêu tối thiểu) trước khi phân phối ứng dụng.

Tất nhiên theo cách này, bạn không được bảo vệ chống lại mọi sai lầm có thể xảy ra nhưng ít nhất bạn đã phân lập các tham chiếu NK. Theo như chiến lược tốt hơn về logic nghiệp vụ của ứng dụng, điều này tùy thuộc vào bạn: nó không phải là một nhiệm vụ dễ dàng vì bây giờ Newsstand sẽ quan tâm đến nhiều khía cạnh, như tải xuống nền và cứ như vậy. Bên cạnh mô hình tạp chí bây giờ đã được phân chia giữa mô hình hiện tại của bạn và các tính năng NKIssue, nhưng tất cả những chi tiết này đều là những chi tiết thực hiện vượt ra ngoài câu hỏi cụ thể này.

+0

Xin chào Viggio, đây là một ý tưởng tuyệt vời, cảm ơn bạn. Điều này cho phép tôi giữ mã của tôi thống nhất, trong khi cô lập các phần có thể gây ra các vấn đề tương thích ngược. Cảm ơn rất nhiều! – James

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