2011-10-18 39 views
5

Tôi đang gặp khó khăn khi tìm một số thông tin tốt về phát triển với iOS 5 SDK/XCode 4.2 và có thể hỗ trợ các thiết bị cũ hơn - cụ thể là iPhone 3G.Điều hướng phân mảnh các thiết bị iOS cũ/mới

Về cơ bản tôi mới bắt đầu với phát triển iOS và tôi đã tải xuống xCode 4.2 sử dụng SDK iOS 5. Điều tôi lo ngại là tôi đã gặp rắc rối khi cố gắng chạy một dự án mới vani trên iPhone 3G để kiểm tra khả năng tương thích (ví dụ: armv6 problem) Rõ ràng là Apple muốn chúng tôi xây dựng phần cứng mới hơn nhưng chúng tôi chịu trách nhiệm khi hỗ trợ người dùng ứng dụng của chúng tôi, những người vẫn đang chạy phần cứng cũ hơn. Đặc biệt là nếu bạn muốn ứng dụng của mình ở trong càng nhiều bàn tay càng tốt.

Ví dụ: ARC có vẻ như một thần gửi, nhưng nó sẽ không hoạt động trên các phiên bản iOS bên dưới 4.3. Tôi cũng đã có trải nghiệm tốt với Storyboards cho đến khi tôi cố gắng cài đặt ứng dụng trên thiết bị iOS5 trước.

Có bất kỳ nguồn thông tin tốt nào để thực hiện các phương pháp hay nhất khi cố gắng hỗ trợ tất cả các thiết bị iOS không? Đây có phải đơn giản là một trường hợp người dùng phải lo lắng rằng đã đến lúc có được một chiếc iPhone mới chưa? Hoặc là nó là một trường hợp phát triển với các SDK cũ hơn cho đến khi chúng tôi chỉ theo đuổi đuôi dài? Câu hỏi này đã theo đuổi đuôi dài chưa?

Nó gợi nhớ một cách tinh tế về các tiêu chuẩn trình duyệt hỗ trợ phân mảnh. Rất mong nhận được suy nghĩ của người khác.

+0

Đây là vấn đề thực sự. Tốt nhất, và tốt nhất tôi có nghĩa là một trong những khuyến cáo của Apple, là luôn luôn đẩy về phía trước và thả hỗ trợ cho các hệ điều hành cũ. Bạn có thể thấy điều đó trong các ứng dụng của riêng họ. iMovie và tất cả iWork hiện chỉ là iOS 5. Tôi không đồng ý với điều này, nếu chỉ vì có tiền để được hỗ trợ hàng triệu thiết bị cũ ra khỏi đó. Nhưng đây là lý do tại sao họ không làm cho nó dễ dàng ... họ không quan tâm. Có nhiều cách để làm việc xung quanh nó, nhưng bạn sẽ phải giữ cho các thiết bị trên tay để kiểm tra, và tránh nâng cấp chúng. Đó là một gánh nặng thực sự trên các nhà phát triển nhỏ hơn, chắc chắn. –

+0

Tuyệt đối. Bạn có biết bất kỳ nguồn thông tin nào cho thấy sự suy giảm xu hướng của các thiết bị cũ hơn không? – Chris

Trả lời

2

Bạn có thể hạ thấp mục tiêu triển khai trong cài đặt tóm tắt của mục tiêu để hỗ trợ phiên bản hệ điều hành thấp hơn. Thông báo trước là mã vẫn biên dịch sang SDK mới nhất mà bạn đã cài đặt. Điều này có nghĩa là bạn không thể gọi bất kỳ phương thức nào hoặc sử dụng bất kỳ chức năng nào được phát hành sau phiên bản hệ điều hành thấp nhất mà bạn muốn hỗ trợ. Nếu bạn định sử dụng các phương pháp mới cho các thiết bị đang chạy phiên bản hệ điều hành mới hơn, bạn cần bao quanh chúng bằng

if ([<class> respondsToSelector:@selector(methodName)] { 

} 

để đảm bảo phương pháp sẽ chỉ chạy trên các thiết bị hỗ trợ.

+1

Apple có một số tài liệu về các kỹ thuật tương tự tại đây http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html –

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