• 【代码笔记】iOS-performSelector


    代码:

    复制代码
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        self.title=@"performSelector";
        
        
        //performSelector是运行时系统负责去找函数/方法的,在编译时候不做任何校验;但是直接调用肯定在编译是会校验。如果函数不存在,那么直接调用 在编译时候就能够发现(借助Xcode可以写完就发现),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃)
        //Cocoa支持在运行时 向某个类添加方法(应该极少人用到, 即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用)
        
        /*直接调用方法时候,一定要在头文件中声明该方法,使用时候,也要将头文件import进来
        
        而使用performSelector时候, 可以不用import头文件,对包含方法的 对象 调用performSelector即可*/
        
        // 没有参数
        BOOL isNoParam= [self respondsToSelector:@selector(methodNoParam)];
        if (isNoParam) {
            [self performSelector:@selector(methodNoParam)];
        }
        
        // 一个参数
        BOOL isOneParam= [self respondsToSelector:@selector(methodWithOneParam:)];
        if (isOneParam) {
            [self  performSelector:@selector(methodWithOneParam:) withObject:@"firsht"];
        }
        
        // 二个参数
        BOOL isParams= [self  respondsToSelector:@selector(methodWithParams: andParamSecond:)];
        if (isParams) {
            [self  performSelector:@selector(methodWithParams: andParamSecond:) withObject:@"first" withObject:@"second"];
        }
    
    }
    #pragma -mark -perform
    - (void)methodNoParam{
        NSLog(@"methodNoParam");
    }
    
    - (void)methodWithOneParam:(id)paramFirst{
        NSLog(@"methodWithOneParam: %@", paramFirst);
        
    }
    
    - (void)methodWithParams:(id)paramFirst andParamSecond:(id) paramSecond{
        NSLog(@"methodWithOneParam: %@,%@", paramFirst,paramSecond);
        
    }
    复制代码
  • 相关阅读:
    索引信息统计
    删除脚本
    归档脚本
    SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
    用js输出同样字符出现的次数
    grid布局
    统计字符出现的次数
    百度地图
    For each...in,For...in ,For...of的Examples和Explanation
    Object的起源
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/6961112.html
Copyright © 2020-2023  润新知