ios - iPhone SDK 中弱链接的替代方案?

标签 ios objective-c cocoa-touch backwards-compatibility weak-linking

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

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

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

最佳答案

你应该是针对新框架的弱链接。除此之外,您应该使用 NSClassFromStringrespondsToSelectorinstancesRespondToSelector 等方法检查新 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/

相关文章:

objective-c - 具有动态变量的 uint8_t 数组

iphone - 无法将数据对象传递给 View Controller 内的 View Controller

ios - NSMutableArray 追加 NSMutableArray

ios - 启用 Bitcode 的静态库如何不出错?

objective-c - 如何检查结构是否已初始化?

ios - UIDocumentInteractionController 不会在 iOS 11 中打开其他应用程序

objective-c - 覆盖 getter 只需要 @synthesize

ios - 添加一个 subview (在 xib 中创建)到 UIView

ios - 使用AFNetworking 2批处理请求上传图像阵列

ios - 如何动态改变按钮的背景