码迷,mamicode.com
首页 > 其他好文 > 详细

block

时间:2015-08-19 22:42:31      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

  • block方法和代理是可以互换的。

block只能用copy,用strong是没用的:

@property (nonatomic, copy) void (^hideBlock)();// 没有返回值

@property (nonatomic, copy) void (^setTitleBlock) (NSString *title);// 没有返回值,带参数

@property (nonatomic, copy) NSString *(^getTitleBlock)();// 返回值是字符串

 

 

  1. block里面不能用self,要先转成weak

 

  1. copy状态下的block(堆里面的block)会对block里面使用的外部变量 强 引用,造成内存泄露。因为循环引用,见下图。解决方法是将block代码中,用的外部变量(self)先赋值给一个声明为weak的变量,之后再block代码中用这个weak变量。__weak ILsSettingViewController *setting = self;

 

 

  • // 邓超界:一定要注意,此处的void,代表返回值类型是block

typedef void (^StatusSuccessBlock)(NSArray *array);

typedef void (^StatusFailureBlock) (NSError *error);

 

@interface StatusTool : NSObject

 

// 邓超界:一定要注意,此处的void,代表返回值类型是block

+ (void)statusesWithSuccess:(StatusSuccessBlock)success andFailure:(StatusFailureBlock)failure;

 

block

标签:

原文地址:http://www.cnblogs.com/dengchaojie/p/4743382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!