@strongify以及@weakify宏命令的使用場(chǎng)景和原理
主要是在block中使用
(因?yàn)閎lock一般都在對(duì)象內(nèi)部聲明.. 如果在block內(nèi)部使用了當(dāng)前對(duì)象的屬性,就會(huì)造成循環(huán)引用(block擁有當(dāng)前對(duì)象的地址,而當(dāng)前對(duì)象擁有block的地址),而引起內(nèi)存泄露,block和當(dāng)前對(duì)象都無(wú)法釋放.
)
@weakify 將當(dāng)前對(duì)象聲明為weak.. 這樣block內(nèi)部引用當(dāng)前對(duì)象,就不會(huì)造成引用計(jì)數(shù)+1可以破解循環(huán)引用
@strongify 相當(dāng)于聲明一個(gè)局部的strong對(duì)象,等于當(dāng)前對(duì)象.可以保證block調(diào)用的時(shí)候,內(nèi)部的對(duì)象不會(huì)釋放
大概相當(dāng)于
__weak typeof(self) weakSelf = self;
block = ^(){
__strong typeof(weakSelf)strongSelf = weakSelf;
// strongSelf.property
};