美文网首页
Object-C简单实现链式编程

Object-C简单实现链式编程

作者: 河西走廊 | 来源:发表于2020-09-24 18:36 被阅读0次

    Object-C实现链式编程

    链式编程,多用于给对象赋值操作,可以一直.下去,方便赋值操作

    例如:

    [FQTestView new].fq_frame(CGRectMake(100, 100, 100, 50)).fq_bgColor([UIColor redColor]).fq_addView(self.view);
    

    Object-C的链式编程是基于block,实现的,通过在block内做赋值操作,同时block 返回的是当前对象。因为返回的是当前对象,所有可以继续调用当前对象的方法

    代码示例:

    自定义一个view,叫 FQTestView

    FQTestView.h代码

    @interface FQTestView : UIView
    
    /** <#注释#> */
    @property (nonatomic, copy, readonly) FQTestView *(^fq_frame)(CGRect frame);
    
    /** <#注释#> */
    @property (nonatomic, copy, readonly) FQTestView *(^fq_bgColor)(UIColor *color);
    
    /** <#注释#> */
    @property (nonatomic, copy, readonly) FQTestView *(^fq_addView)(UIView *superView);
    
    @end
    

    FQTestView.m代码

    @implementation FQTestView
    
    - (FQTestView * _Nonnull (^)(CGRect))fq_frame{
        return ^(CGRect frame){
            self.frame = frame;
            return self;
        };
    }
    
    - (FQTestView * _Nonnull (^)(UIColor *))fq_bgColor{
        
        return ^(UIColor *color){
            self.backgroundColor = color;
            return self;
        };
    }
    
    - (FQTestView * _Nonnull (^)(UIView * _Nonnull))fq_addView{
        
        return ^(UIView *superView){
            [superView addSubview:self];
            return self;
        };
    }
    
    @end
    
    

    在ViewController 的调用如下

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        [FQTestView new].fq_frame(CGRectMake(100, 100, 100, 50)).fq_bgColor([UIColor redColor]).fq_addView(self.view);
        
    }
    

    好了,是不是很简单

    相关文章

      网友评论

          本文标题:Object-C简单实现链式编程

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