现代ios应用的开发。不使用GCD和block,效率会减少非常多,在今年3月份之前,我在block的学习和使用方面,精力和经验都明显不足,在SF有个牛逼同事。不仅自己积累了一套库,并且对这个库持续进行更新和维护,其架构能力和代码水平都不错,他的代码中使用了大量的GCD,为了适应这些技术。我在coding的过程中,開始有意识的多写GCD的代码,刚開始一切顺利。直到我使用block来作为一个对象的属性。这让我纠结了非常久。

我遇到的问题是:1。这样的属性block,其它类在使用的时候,应该怎么写? 2,block的类型不为void、int,而是对象时,比方NSString*时,又应该怎么办?

这两个非常easy的问题,让我前后一起纠结了2个多小时。以下,我把我的測试代码上上来。希望对遇到相同问题的人,有所帮助。以下直接上代码了。

头文件例如以下,实现文件里不须要实现不论什么代码。

#import <Foundation/Foundation.h>

typedef
int(^compareBlock)(int a,
int b);

@interface HBTestBlock :
NSObject

@property(nonatomic,
copy) compareBlock compare;

@property(nonatomic,
copy) UIView *(^viewGetter)(NSString *imageName);
//注意其返回类型为UIView *

@end

以下这两个函数,展示的是怎样在其它的类中,使用这两个属性。

#pragma mark 測试对象的属性为block

- (void)testObjPropertyBlock

{

HBTestBlock *objPropertyBlockObj = [[HBTestBlock
alloc] init];

objPropertyBlockObj.viewGetter = ^(NSString *imageName){

//        return [[UIView alloc] init]; //特别注意此处。若对象不匹配,则会报错,设置为nil也会报错。

return [self
currentView];

};

objPropertyBlockObj.viewGetter(@"hello");
//实际运行block

}

- (UIView *)currentView

{

NSLog(@"now I am in currentView");

return
nil;

}

- (void)testPropertyBlock

{

HBTestBlock *properBlockObj = [[HBTestBlock
alloc] init];

properBlockObj.compare = ^(int a,int b)

{

int result = [self
maxer:a another:b];

NSLog(@"the result is %d",result);

return result;

};

));

}

- (int)maxer:(int)a another:(int)b

{

if (a > b) {

return a;

}

return  b;

}


最新文章

  1. WDCP控制面板的常用liunx命令集
  2. Android 属性动画(Property Animation) 全然解析 (下)
  3. KeybMap 键盘映射工具更新至 V1.5(修订)
  4. Java疯狂讲义
  5. 修改/etc/resolv.conf又恢复到原来的状态?[转]
  6. H5页面适配所有iPhone和安卓机型的六个技巧
  7. Linux下PHP连接MS SQLServer的办法
  8. 打印机驱动冲突和端口异常:win10更新部分补丁后,打印机本地连接(连接打印机的主机)可以打印,其他共享网络中的电脑可以连接到打印机,但不能打印——解决方案
  9. Android Studio 不得不知的20大快捷键
  10. mongodb备份还原
  11. c#中的Cache缓存技术
  12. 关于wincc与博图的安装问题
  13. Echarts tooltip 坐标值修改
  14. Concordion test
  15. NET设计模式 第二部分 创建型模式(4):工厂方法模式(Factory Method)
  16. Double-Array Trie分词词典简述
  17. dup的使用
  18. Python练习笔记——计算个人体重指数
  19. chrome不能安装adblock插件
  20. BZOJ3875 AHOI2014/JSOI2014骑士游戏(动态规划)

热门文章

  1. HTTP响应头信息(Response Headers)与请求头信息(Request Headers)
  2. selenium_Alert
  3. mac电脑安装apache,不能启动
  4. Python之argparse模块
  5. Js实现子窗体给父窗体的元素赋值
  6. JavaWeb面试(七)
  7. Linux系列教程(二十四)——Linux的系统管理
  8. 老男孩Python全栈开发(92天全)视频教程 自学笔记02
  9. 高性能分布式执行框架——Ray
  10. 以太坊客户端Geth命令用法-参数详解