我已经获得了一些无弧项目的代码
@interface TRSSImageDownloader()
@property (nonatomic, retain) NSMutableData *activeDownloadData;
@end
@implementation TRSSImageDownloader
@synthesize activeDownloadData = _activeDownloadData;
-(id)init {
self = [super init];
if (self) {
_activeDownloadData = [NSMutableData new];
}
return self;
}
-(void)dealloc {
[_activeDownloadData release];
[super dealloc];
}
它正在运行,但是当我通过" Profile" - >" Leaks"进行测试时,它会显示activeDownloadData
上的内存泄漏
答案 0 :(得分:2)
泄漏只会告诉您泄漏内存的分配位置。这并没有具体告诉您未能正确发布的位置。很可能你在其他地方错误地为_activeDownloadData
分配了一些内容,或者你正在泄漏所有TRSSImageDownloader
(因此,通过间接,也泄漏_activeDownloadData
)。
这个问题的最常见原因是直接使用ivars。如果您在任何地方都使用访问者(init
和dealloc
除外),这些问题往往很容易消失。如果直接在对象内使用ivars,则会出现这些问题。如果没有访问器,您需要直接审核分配给ivar的每个地方,并确保正确释放旧值。
如果可能的话,转换为ARC当然是推荐的解决方案。