Block的使用

#import

@interfaceViewController :UIViewController

//block 定义 无返回值 传值obj

typedefvoid(^myblock)(idobj);

-(void)creatandblock:(myblock)block;

@end

@interfaceViewController()

@property(nonatomic,assign)intnumber;

//定义一个返回值为Void,名为blockBack的Block。传值为字符串。

@property(nonatomic,copy)void(^blockBack)(NSString*valuename);

@end

//定义block

typedefvoid(^myblock)(idobj);

@implementationViewController

//添加Block的类型的进行传值

-(void)creatandblock:(myblock)block

{

}

- (void)viewDidLoad {

[superviewDidLoad];

[selfcreatNSstring:@"xiao"andBlock:^(idobj) {

obj =@"abc";

}];

}

-(void)creatwithBlock:(myblock)block

{

}

-(void)creatNSstring:(NSString*)name andBlock:(myblock)block

{

block(@"acb");

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

}

@end

在iOS 编程中发现Capturng 'self' strongly in this block is likely to lead to a retain cycle 的警告,告诉其,造成的是Block代码块的循环引用。

使用方法

__weaktypeof(self) weakself =self;

self.popView.selectRowAnIndex= ^(NSIntegerindex)

{

NSString*str =  weakself.array[index];

NSLog(@"%@",str);

};

就是将self用弱引用的weakself替代。

主要造成循环引用的问题是 当前类调用Block ,block内部还有当前类,就会造成循环引用,可以将当前的类用__weak typeof(当前类) weak+当前类 = 当前类

void (^dealingResult)(NSArray *)= ^(NSArray *statues){

设计的一个block调用直接dealingResult();返回值为void

};

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

相关阅读更多精彩内容

友情链接更多精彩内容