代码之家  ›  专栏  ›  技术社区  ›  Moshe

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

  •  4
  • Moshe  · 技术社区  · 14 年前

    我想让我的应用程序与旧版本的iPhone操作系统兼容。我确实认为弱链接是一种选择。我可以使用操作系统版本检测代码来避免操作系统无法处理的代码块吗?(比如说IAD?)

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

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

    1 回复  |  直到 9 年前
        1
  •  15
  •   Jasarien    14 年前

    对于新框架,您应该是弱链接。除此之外,您还应该使用如下方法检查新API的可用性 NSClassFromString , respondsToSelector , 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
    }
    

    等等。希望这有帮助。