iOS开发实用技术iOS 易混淆的点iOS

关于Block内部要不要使用weakSelf的几种情况

2016-01-13  本文已影响7905人  iOSWoden

我们知道当对block使用不当时会造成循环引用导致内存泄露,这里列出几种使用block到底会不会引起循环引用的例子,通过重写控制器dealloc,当控制器被pop看有没有调用来判断。

self.testBlock = ^()
    {
        NSLog(@"%@",self.mapView);
    };
    self.testBlock();
    self.testBlock = ^()
    {
        [weakSelf test];
    };
-(void)test
{
    NSLog(@"%@",self.mapView);
}

    TestBlock testBlock = ^()
    {
        NSLog(@"%@",self.mapView);
    };
[self test:testBlock];
    [WDNetwork testBlock:^(id responsObject) {
        
        NSLog(@"%@",self.mapView);
    }];

以上几个是我通过控制器pop时,通过有没有走dealloc方法测出来的。

这里还漏了,后来学习RAC发现外面用弱引用weakSelf,在block内部还应该用强引用指向外面的weakSelf

上一篇 下一篇

猜你喜欢

热点阅读