优艾设计网

为什么block 里面使用self,instruments leaks 没有检测出内存泄漏?需要用什?

优艾设计网 https://www.uibq.com 2023-04-15 14:17 出处:网络 作者:在线设计
① 为什么block 里面使用self,instruments leaks 没有检测出内存泄漏?② 那么需要用什么方法才能检测出这里是出现了内存泄漏,因为一直都是网上这么说的,自己检测就不出来了。下面事例代码:#import \"ViewContr

① 为什么block 里面使用self,instruments leaks 没有检测出内存泄漏?
② 那么需要用什么方法才能检测出这里是出现了内存泄漏,因为一直都是网上这么说的,自己检测就不出来了。

下面事例代码:

#import "ViewController.h"typedef void(^myBlock)(NSString *);@interface ViewController ()@property(nonatomic, copy) myBlock BlockName;@property (nonatomic, copy) NSString*name1; @property (nonatomic, copy) NSString*name2; @property (nonatomic, strong) NSMutableArray*students; @end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];///优艾设计网_设计 问:为什么instruments leaks 没有检测出内存泄漏? /// 那么需要用什么方法才能检测出这里是出现了内存泄漏,因为一直都是网上这么说的,自己检测就不出来了。 self.BlockName = ^(NSString *ken){ self.name1 = ken; self.name2 = ken; [self.students addObject:self.name1]; [self.students addObject:self.name2]; };self.BlockName(@"apple"); }@end


lmxm119 2022-06-04 08:48

在block使用self实际上是循环引用,也就是相对于ARC情况下两个对象之间进行了强引用优艾设计网_设计圈,虽然彼此都没有释放内存,但是彼此都是被引用者。目前Xcode 8中使用runtime调试可以看到内存的关系图,可以通过关系图找到循环引用的两个对象。


0

精彩评论

暂无评论...
验证码 换一张
取 消