美文网首页iOS
iOS 一些简单的高聚合示例

iOS 一些简单的高聚合示例

作者: farmerly | 来源:发表于2017-02-09 21:54 被阅读33次

block高聚合

  • 这是计算类 .h
    #import <Foundation/Foundation.h>
    @interface xxx : NSObject
    @property(nonatomic,assign)int result;
    - (xxx *(^)(int nub))add;
    @end
  • 计算类 .m
    #import "xxx.h"
    @implementation xxx
    - (xxx *(^)(int nub))add{
    return ^(int nub){
    _result +=nub;
    return self;
    };
    }
  • 模仿来自于masonry .h文件

    • 首先你要确定一个扩展,一个公用的扩展计算方法
      #import <Foundation/Foundation.h>
      #import "xxx.h"
      @interface NSObject (category)
      + (int)makeCategory:(void(^)(xxx *make))block;
  • .m文件
    #import "NSObject+category.h"
    @implementation NSObject (category)
    + (int)makeCategory:(void (^)(xxx *))block{
    xxx * make = [[xxx alloc]init];
    block(make);
    return make.result;
    }

  • 因为定义原因,所以可以在任何一个类都可以调用
    int result = [NSObject makeCategory:^(xxx *maker) {
    maker.add(10).add(20);
    maker.add(30).add(40);
    }];
    NSLog(@"%d",result);

  • 这样就模仿masonry的block了,具体的想知道原因多看看这个框架就知道了

另外一种高聚合代码

  UILabel * lable = ({
    
    lable = [[UILabel alloc]init];
    lable.text = @"111";
    lable.frame = CGRectMake(0, 0, 0, 0);
    lable;
    
});

-这样就可以特别容易找到对应的定义了,而且看起来简洁,不要为什么

相关文章

网友评论

    本文标题:iOS 一些简单的高聚合示例

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