今天检查内存泄露的问题,发现误用系统API的问题。导致内存泄露。这个问题还是比较常见的,我觉得还是记下了,分享给大家
现场还原
–FYSingleInstance类主要代码
// 初始化上下文
+ (FYSingleInstance *) S {
static FYSingleInstance * instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (!instance) {
instance = [[FYSingleInstance alloc] init];
}
});
return instance;
}
/*
* 停止线程
*/
+ (void) stopThread:(id) thread withUserId:(id) userId {
// 停止初始化线程
@try {
[[FYSingleInstance S] performSelector:@selector(stop:) onThread:thread withObject:userId waitUntilDone:NO];
}
@catch (NSException * exception) {
NSLog(@"%@", exception.callStackSymbols);
}
}
–使用代码用例
[FYSingleInstance stopThread:_currentThread withUserId:nil];
内存泄露现象
如果不断调用上述代码,就看到不断有内存泄露。
请看下图:
抽丝剥茧开始
好奇怪为啥这么多16 bytes在内存中,而且使用代码用例调用越多,这些16bytes的内存越多。
内存泄露就是这个吧。