导入基于iOS版本的不同界面

时间:2012-03-26 14:31:52

标签: ios ios5 preprocessor

我创建了一个CustomURLConnection类。

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

@interface CustomURLConnection : NSURLConnection<NSURLConnectionDataDelegate,NSURLConnectionDelegate>

或者我想使用

@interface CustomURLConnection : NSURLConnection 

我该怎么做?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

@interface是一个编译时构造,它允许编译器知道命名符号是类类型,并为其提供足够的信息,以根据看起来滥用类的内容适当地生成警告消息其他演员。

因此,根据应用程序启动的操作系统版本,您无法对@interface做任何让它看起来不同的内容。你期望它做什么 - 打印出你会收到的所有编译器警告?

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

在你的情况下,将协议声明留在那里并且没有考虑过它应该完全没有问题。

答案 2 :(得分:1)

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

预处理程序指令仅在您具有单独编译的应用程序的多个版本时才有意义。如果您的某个应用需要根据用户的iOS版本采取不同的行为,则需要通过运行时检查来执行此操作。