【问题标题】:How to hide a block of code in a particular IOS Version如何隐藏特定 IOS 版本中的代码块
【发布时间】:2013-09-27 06:02:50
【问题描述】:

您好,我想在我的一个项目中隐藏一段代码。隐藏意味着我不想在一个 IOS 版本(如 IOS6)中执行代码块,而想在另一个版本(如 IOS7)中执行。为什么我想这样做是因为任何 IOS 开发人员都知道一个普遍的真理Apple 在新版本中引入新功能的时间,因为 SDk 可能会发生变化。如果我们想在旧版本中运行新版本的应用程序,编译器会出错,因为新版本相关的方法在旧版本中不可用。因此,为了避免这些错误,我需要一种方法来隐藏与新版本相关的代码块,同时在旧版本中运行应用程序。

所以如果有人知道,请告诉我。提前谢谢。

【问题讨论】:

    标签: ios


    【解决方案1】:

    你可以这样做:

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
    {
        // your code
    }
    

    【讨论】:

      【解决方案2】:

      您可以随时检查操作系统的版本。看看this question。它会解决你的问题。

      【讨论】:

        【解决方案3】:

        要么使用respondsToSelector方法,要么使用[[UIDevice currentDevice] systemVersion]检查系统版本。

        respondsToSelectorNSObject协议提供的方法。
        1.

        if ([str respondsToSelector:@selector(sizeWithFont:)]) {
                    //do something
                }
            else{
            //do other thing
            }
        

        2.

         NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare: @"6.0" options: NSNumericSearch];
            if (order == NSOrderedSame || order == NSOrderedDescending) {
                // OS version >= 6.0
            } else {
                // OS version < 6.0
            }
        

        【讨论】:

        • 嗨 puneet 感谢您的快速回复。实际上,我使用了您推荐的方法,但是在 IOS6 中出现错误。例如,我编写了一个条件来在 IOS 7.0 中执行 [self setNeedsStatusBarAppearanceUpdate]。它在带有 IOS SDk7.0 的 Xcode 4.5 中运行良好。但是如果我运行使用 IOS SDK 6.0 的 xcode 4.6 中的相同代码它给出了这样的错误 @"No Visible @interface for "Class name here" 声明选择器 'setNeedsStatusBarAppearanceUpdate'" 像这样,请帮助解决这个问题。
        • @Gadamsetty,我认为您将构建的 SDK 与您所针对的操作系统混为一谈。如果您需要针对较旧的 SDK 构建代码,那么您需要使用 #ifdef 的编译时检查,而不是(或除此之外)像 Puneet 建议的运行时检查。
        【解决方案4】:

        您可以使用UIDevice 类的systemVersion 属性。

        喜欢:

        if ([[[UIDevice currentDevice] systemVersion] floatValue] <= 6 )
        {
            if ([yourObject respondsToSelector:@selector(yourMethod)])
            {
               [yourObject performSelector:@selector(yourMethod)];
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多