內存泄露的點滴

內存泄露異步

普通 普通的就是使用自動釋放池和一段使用strong,一端使用weakoop

block 防止循環引用, 使用__weakspa

CG 建立的同時,記得使用完成以後釋放 CGRealse.net

通知  dealloc線程

NSTimer  code

如下代碼的問題:對象

@interface SvCheatYourself () {
    NSTimer *_timer;
}@end@implementation SvCheatYourself

- (id)init {
    self = [super init];    if (self) {
        _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(testTimer:) userInfo:nil repeats:YES];
    }    return self;
}

- (void)dealloc {
    [_timer invalidate];
}

- (void)testTimer:(NSTimer*)timer{
    NSLog(@"haha!");
}

@end 內存

1)timer都會對它的target進行retain,對於重複性的timer,除非手動關閉,不然對象不會釋放,場景:導航控制器關聯的控制器沒法銷燬
2)NSTimer要加到異步線程中,防止線程繁忙致使定時器失準

3)timer必須加入到runloop中才會有效,主線程runloop默認開啓,異步線程手動啓動get

4)注意runloop模式it

相關文章
相關標籤/搜索