block循环引用解决

  • 时间:
  • 浏览:1
  • 来源:大发彩神幸运飞艇_大发神彩幸运飞艇官方

@implementation TestNetworkBlock

在 block 时会定义对 self 的一两个 多弱引用 wSelf,意味是弱引用,很多很多很多很多有当 self 被释放时 wSelf 会变为nil;

在block体组织组织结构声明一两个 多强引用对象bself指向该wSelf。bSelf只会在block组织组织结构执行完毕才会消亡,另一两个 就保证了self对象被组织组织结构其他程序运行释放掉的情况表。又防止了循环引用,意味在block执行完,会释放掉bSelf。

_countBlock为self对象,self强引用了_countBlock,同时_countBlock又怕上边self释放,很多很多很多很多有block体上边会强引用self。意味循环引用,内存无缘无故不用被释放,dealloc很多很多很多很多 会被调用。

@implementation ViewController

(void)viewDidLoad {

@end

多程序运行调用,block外面声明了weakSelf,则block组织组织结构对self的引用为指针引用,当组织组织结构[self.testNetwork release], self.testNetwork = nil;时,weakSelf为nil,很多很多很多很多有意味运行失败。

@end

(id) init

{

self = [super init];

if (self)

{

return string;

}

@end

@interface TestNetworkBlock ()

{

}

}

@property (nonatomic, strong) NSString *strTest;

}

return self;

}