一個(gè)對(duì)象中強(qiáng)引用了block,在block中又強(qiáng)引用了該對(duì)象眷柔,就會(huì)發(fā)生循環(huán)引用期虾。
1、變量在block中使用
__block int a = 0;
NSLog(@"1###%p", &a); //棧區(qū)
void (^foo)(void) = ^{
a = 1;
NSLog(@"2###%p", &a); //堆區(qū)
};
foo();
NSLog(@"3###%p", &a); //堆區(qū)
2017-08-08 10:59:24.661 animateProject[12371:155504] 1###0x7fff5cfa0a18
2017-08-08 10:59:24.661 animateProject[12371:155504] 2###0x600000033098
2017-08-08 10:59:24.661 animateProject[12371:155504] 3###0x600000033098
2驯嘱、對(duì)象在Block使用
#define WS(weakS,obj) __weak __typeof(&*obj)weakS = obj;
id __weak weakSelf = self;
id __block weakSelf = self;
__weak __typeof(&*self)weakSelf = self