Block循环引用问题(Objective-c)

Posted dhui69

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Block循环引用问题(Objective-c)相关的知识,希望对你有一定的参考价值。

造成循环引用的简单理解是:Block的拥有者在Block作用域内部又引用了自己,因此导致了Block的拥有者永远无法释放内存,就出现了循环引用的内存泄漏

示例代码

@interface ObjTest () 
    NSInteger testValue;

@property (copy, nonatomic) void (^block)();
@end

@implement ObjTest
- (void)function 
/*
    //这里会循环引用
    self.block = ^() 
        self.testValue = 100;
    ;

*/

 __weak ObjTest* weakSelf = self;//使用弱引用,解决循环引用问题
    self.block = ^() 
        weakSelf.testValue = 100;
    ;


@end

再看下面的例子

 

以上是关于Block循环引用问题(Objective-c)的主要内容,如果未能解决你的问题,请参考以下文章

解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json

解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json

iOS底层探索之Block——如何解决Block循环引用问题?

【OC语法】block的循环引用

Block循环引用问题

面试题:Block循环引用的理解