替代iPhone SDK中的弱链接?
我正在寻找使我的应用程序与旧版本的iPhone OS兼容。 我确实看到了弱链接作为一个选项。 我可以使用操作系统版本检测代码来避免操作系统无法处理的代码块吗? (说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 }
如果你需要使用新的常量,types或函数,你可以这样做:
if (&UIApplicationWillEnterBackgroundNotification != nil) { // go ahead and use it }
如果您需要知道您是否可以在已经存在的class级上使用新的方法,您可以:
if ([existingInstance respondsToSelector:@selector(someSelector)]) { // method exists }
等等。 希望这可以帮助。