美文网首页
iOS链式编程学习笔记

iOS链式编程学习笔记

作者: uubird | 来源:发表于2018-03-05 14:53 被阅读0次

    概念:像这样top.equalTo(self.view).offset(60)通过”点”语法,将需要执行的代码块连续的书写下去,就是链式编程.它能使代码简单易读,书写方便。

    原理:保证每个方法执行之后,都返回对象本身,然后对象本身通过点语法再调用别的方法,以此实现链式执行。点语法其实是oc中取属性的一种语法。oc中比较神奇的一点是,即使没有属性,只有方法,点语法也可以把一个方法当做getter 方法来用,可以点式调用,像 property 一样。

    代码:

    @interface Test : NSObject
    
    -(Test *)run;
    
    -(Test * (^)(NSString *))testPrint;
    
    @end
    
    @implementation Test
    
    -(Test *)run {
    
        NSLog(@"----------------run-------------------");
    
        return self;
    
    }
    
    -(Test * (^)(NSString *))testPrint {
    
        return ^(NSString * str){
    
            NSLog(@"----------------%@-------------------",str);
    
            return self;
    
        };
    
    }
    
    @end
    
    Test *t = [[Test alloc]init];
    
        t.run;
    
        t.testPrint(@"000000000");
    
        [t testPrint](@"3333333333333");
    
        t.run.testPrint(@"1111111111");
    
        [t run].testPrint(@"22222222222");
    
        [[t run] testPrint](@"3333333333333");
    

    t.run很好理解,直接调用了getter方法。-(Test *)run。而且返回了self对象。

    t.testPrint(@"000000000"); 其实应该这样理解:t.testPrint (@"000000000")

    t.testPrint 调用了getter方法,-(Test * (^)(NSString *))testPrint 返回了一个block。block后边加上带参数的括号,执行这个block,最后block执行完成之后返回了self对象。

    这两点理解之后,下边的几个调用原理也就显而易见了。

    总结:ios中链式编程是利用点语法实现的,在实际应用中,如果方法需要传参数,那么就可以用block的getter方法,如果不需要传参,就像例子中的run方法,可以不用block。具体怎么实现要看需求。

    相关文章

      网友评论

          本文标题:iOS链式编程学习笔记

          本文链接:https://www.haomeiwen.com/subject/tudhfftx.html