1.使用delegate代理時(shí)晕城,屬性修飾符采用strong時(shí)耕漱,會(huì)產(chǎn)生循環(huán)引用牡拇,因此delegate的屬性修飾符要使用weak
2.block
在A(yíng)RC中怎囚,block的屬性修飾符可以使用weak或者strong
__weak typeof(self) weakSelf = self;
self.block = ^{
weakSelf ....
};
3.當(dāng)block中有延時(shí)操作時(shí),
__weak typeof(self) weakSelf = self;
self.block = ^{
__strong typeof(self) strongSelf = weakSelf;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
strongSelf .....
});
};
此時(shí)weakSelf有可能會(huì)在使用前被提前釋放床佳,因此需要在dispatch_afert前面增加強(qiáng)引用的相關(guān)代碼
4.NSTimer
timer引用了self:target時(shí)添加了強(qiáng)引用
self又引用了timer:timer是self的成員變量
因此滋早,需要在self被釋放前將timer invalidate 并且置為nil
[timer invalidate];
timer = nil;