美文网首页
block解决循环引用的二种方式

block解决循环引用的二种方式

作者: 本本的开心牧场 | 来源:发表于2018-09-12 10:22 被阅读0次

第一种

__block MyViewController *myController = [[MyViewController alloc] init];
// ...
myController.completionHandler =  ^(NSInteger result) {
    [myController dismissViewControllerAnimated:YES completion:nil];
    myController = nil;
};
[self presentViewController:myController animated:YES completion:^{}];

第二种 较优雅吧

MyViewController *myController = [[MyViewController alloc] init];
// ...
__weak MyViewController *weakMyController = myController;
myController.completionHandler =  ^(NSInteger result) {
    MyViewController *strongMyController = weakMyController;
    if (strongMyController)
    {
        [strongMyController dismissViewControllerAnimated:YES completion:nil];
    }
    else
    {
        // Probably nothing...
    }
};
[self presentViewController:myController animated:YES completion:^{}];


相关文章

网友评论

      本文标题:block解决循环引用的二种方式

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