4

我希望使我的应用程序与旧版本的 iPhone OS 兼容。我确实看到提到的弱链接是一种选择。我可以使用操作系统版本检测代码来避免操作系统无法处理的代码块吗?(说 iAD?)

if(OS >= 4.0){
//set up iADs using "NDA code"...
} 

如果是,用什么代替if(OS >= 4.0)

4

1 回答 1

15

您应该对新框架进行弱链接。除此之外,您还应该使用 、 等方法检查新 APINSClassFromStringrespondsToSelector可用性instancesRespondToSelector

例如。针对 MessageUI.framework 的弱链接(一个旧示例,但仍然相关)

首先检查MFMailComposerController类是否存在:

Class mailComposerClass = NSClassFromString(@"MFMailComposerController");
if (mailComposerClass != nil)
{
    // class exists, you can use it
}
else
{
    // class doesn't exist, work around for older OS
}

如果您需要使用新的常量、类型或函数,您可以执行以下操作:

if (&UIApplicationWillEnterBackgroundNotification != nil)
{
    // go ahead and use it
}

如果您需要知道是否可以在已经存在的类上使用新方法,您可以这样做:

if ([existingInstance respondsToSelector:@selector(someSelector)])
{
    // method exists
}

等等。希望这可以帮助。

于 2010-06-16T18:33:26.853 回答