ios - 为什么block 里面使用self,instruments leaks 没有检测出内存泄漏?需要用什么方法才能检测出
PHP中文网
PHP中文网 2017-04-18 09:44:06
0
2
602

① 为什么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
PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(2)
大家讲道理

Menggunakan diri dalam blok sebenarnya adalah rujukan bulat, iaitu, terdapat rujukan yang kuat antara kedua-dua objek berbanding situasi ARC Walaupun kedua-duanya tidak mengeluarkan ingatan, kedua-duanya dirujuk. Pada masa ini, apabila menggunakan penyahpepijatan masa jalan dalam Xcode 8, anda boleh melihat rajah hubungan memori dan anda boleh menemui dua objek yang dirujuk secara bulat melalui rajah hubungan.

黄舟
__weak __typeof(self) weakSelf=self;
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, 6ull * NSEC_PER_SEC);
    NSLog(@"waited at least 6s.");
    dispatch_after(time, dispatch_get_main_queue(), ^{
        __strong __typeof(weakSelf) strongSelf=weakSelf;
        if (strongSelf) {
            NSLog(@"Oh,shit. self is not nil");
        }else
        {
            NSLog(@"Congratulations");
        }

    });
    
将上段代码放在viewDidLoad里面即可。push这个vc,6秒内pop掉,等待log。

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!