我希望让我的应用与旧版 iPhone 操作系统兼容。我确实看到提到了弱链接作为一种选择。我可以使用操作系统版本检测代码来避免操作系统无法处理的代码块吗? (比如 iAD?)
if(OS >= 4.0){
//set up iADs using "NDA code"...
}
如果是,用什么代替 if(OS >= 4.0)
?
最佳答案
你应该是针对新框架的弱链接。除此之外,您应该使用 NSClassFromString
、respondsToSelector
、instancesRespondToSelector
等方法检查新 API 的可用性。
例如。针对 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
}
等等。希望这会有所帮助。
关于ios - iPhone SDK 中弱链接的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056016/