我们【听】app由于一些历史或性能原因仍然使用MRC内存管理;目前一个新的项目使用了ARC;
合作方代码中getSSID没有写Release代码,存在mem-leak,修改了下,在ARC下CF对象还是要手动release的。
+ (NSString*)getSSID
{
NSString* wifiName = @"";
CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();
NSArray *ifs = (__bridge id)wifiInterfaces;
id info = nil;
for (NSString *ifnam in ifs) {
CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(ifnam));
if(!dictRef) continue;
info = (__bridge id)dictRef;
if(info && [info count]) {
NSDictionary *dic = (NSDictionary*)info;
wifiName = [dic objectForKey:@"SSID"];
}
CFRelease(dictRef);//CFRelease's param must not nil;
if (wifiName) break;
}
CFRelease(wifiInterfaces);//fix leak
return wifiName;
}