iOS 一些简单的高聚合示例

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;
    
});

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容