• 2.检测实例或类方法是否可用


    问题:

      在最新的SDK上进行开发,但是你希望对运行旧版本的设备也支持.

      程序必须不断检查实例或类方法是否存在,否则程序会是脆弱的,因为部署的装置的 SDK 版本,不一定是最新的,也许方法会不存在。 

    讨论:

      有两个关于iOS SDK的概念:

      Base SDK(基底SDK):这个 SDK 是用来编译应用程序。可能是最新最大的 SDK,且能存取所有新的 API

      Deployment SDK/Target(部署SDK):是指定你希望编译后并执行的装置SDK 版本。 

    方案:

      使用 NSObject 的 instancesRespondToSelector:类方法检测指定的 selector 是否存在类实例中。

      要确认一个类是否响应本身的类方法,需使用 respondsToSelector:类方法。  

      你可以使用同样方式检测在一个实例的实例方法

    例子:

    //2.1在这个例子中,我们正在检查存在的具体实例方法,使用 instancesRespondToSelector:NSMutableArray 类(这 NSArray 的子类)的类的方法。另外, 我们可以使用数组实例方法 respondsToSelector:
            NSMutableArray *array1 = [[NSMutableArray alloc]initWithObjects:
                                      @"Item 1",
                                      @"Item 4",
                                      @"Item 3",
                                      @"Item 2",
                                      @"Item 5",nil];
            NSLog(@"Array = %@",array1);
            if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]) {
                //用sortUsingComparator:方法对array1排序
            }
            else if ([NSArray instancesRespondToSelector:@selector(sortUsingFunction:context:)]){
                
            }else{
                //do something else
            }
            if ([array1 respondsToSelector:@selector(sortUsingFunction:context:)]) {
                NSLog(@"1");
            }else if ([array1 respondsToSelector:@selector(sortUsingComparator:)]){
                NSLog(@"2");
            }

      

  • 相关阅读:
    python+selenium框架
    django--form组件
    python +selenium上传文件
    python--UI---登录---验证码
    python+selenium button定位方法
    css-定位技术
    css-盒子模型
    css-元素分类
    序列化
    FileUploadController
  • 原文地址:https://www.cnblogs.com/safiri/p/4010570.html
Copyright © 2020-2023  润新知