Bạn có thể sử dụng phương thức this hoặc phương pháp mà DarkDust nói và kiểm tra phiên bản SDK iOS khi bạn đang biên soạn, nhưng thường là điều thú vị hơn nếu bạn xử lý một số công cụ này trong thời gian chạy vì người dùng có thể cập nhật thiết bị của họ và sau đó sử dụng các tính năng mới hoặc tích hợp hệ điều hành tốt hơn một cách kỳ diệu.
Có một số cách để thực hiện việc này. Trong SDKS mới hơn, bạn cần có NS_CLASS_AVAILABLE
. Tuy nhiên, nếu bạn vẫn hỗ trợ các SDK cũ hơn, bạn có thể không hỗ trợ. Nhưng điều này là mục tiêu-c, vì vậy may mắn đứng về phía chúng tôi:
Class cls = NSClassFromString (@"NSRegularExpression");
if (cls) {
// Create an instance of the class and use it.
} else {
// Alternate code path to follow when the
// class is not available.
}
Về cơ bản cách làm việc này là yêu cầu hệ thống kiểu nếu một lớp có sẵn, nếu không, nó sẽ trả về null. Điều này hơi nguy hiểm nếu không được kiểm tra vì nó là một chuỗi và sẽ biên dịch, nhưng bạn sẽ có thể xử lý nó.
Nếu đó là một lớp tồn tại ở cả hai nơi, bạn có thể kiểm tra tính sẵn sàng chọn trong thời gian chạy như thế này:
if([TheAppleClass instancesRespondToSelector:@selector(aMethod:)]) {
// invoke the inherited method
[myInstance aMethod:parameter];
}
reference1reference2
Bằng cách này bạn có thể cung cấp một xây dựng mà vẫn hỗ trợ OS4. 2 người dùng với một tờ tweet tùy chỉnh, nhưng khi họ nâng cấp, họ sẽ tự động nhận được tích hợp twitter OS. Tuy nhiên, nó vẫn là tất cả trong một bản xây dựng duy nhất mà bạn có thể phát hành khi bạn muốn mà không phải chờ 90% thị trường để cập nhật trước khi bạn bắt đầu xa lánh người dùng hệ điều hành cũ hơn.
Có thể trùng lặp: http://stackoverflow.com/questions/1864114/how-to-detect-iphone-os-version-using-macros – IronMensan