根据iOS版本导入不同的界面



我创建了一个CustomURLConnection类。

如果我的iOS版本大于5.0,那么我想使用

@interface CustomURLConnection : NSURLConnection<NSURLConnectionDataDelegate,NSURLConnectionDelegate>

否则我想使用

@interface CustomURLConnection : NSURLConnection 

我该怎么做?

您可以使用预处理器指令执行这些操作:

#ifdef __IPHONE_5_0 
//Put your ios 5 specific code here
#else
//Put your other code here
#endif

@interface是一个编译时构造,它允许编译器知道命名符号是一个类类型,并为其提供足够的信息,以便根据其他参与者对该类的滥用情况适当地生成警告消息。

因此,根据应用程序在哪个版本的操作系统上启动,你对@interface无法使其看起来不同。你希望它做什么——打印出你会收到的所有编译器警告?

在Objective-C世界中,最好的解决方案始终是根据最新的SDK进行构建,在Info.plist中设置应用程序设计的最低iOS版本,并在运行时(使用NSClassFromStringrespondsToSelector:等)检查可能因此而缺少的任何功能。

在您的情况下,只需将协议声明留在那里,而不必三思。

您是否正在构建和销售两个独立版本的应用程序?

只有当您有多个单独编译的应用程序版本时,预处理器指令才有意义。如果你有一个应用程序需要根据用户的iOS版本表现不同,你需要进行运行时检查。

最新更新