0

我有一些无弧项目的代码

@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];
 }

它正在工作,但是当我通过“配置文件”->“泄漏”对其进行测试时,它显示内存泄漏activeDownloadData

4

1 回答 1

2

泄漏仅告诉您泄漏的内存分配在哪里。这并没有具体告诉您未能正确释放的具体位置。很可能您要么_activeDownloadData错误地将某些内容分配给其他地方,要么泄漏了所有内容TRSSImageDownloader(因此,间接地,也泄漏了_activeDownloadData)。

此问题的最常见原因是直接使用 ivars。如果你在任何地方都使用访问器(除了initand dealloc),这些问题往往很容易消失。如果您直接在对象内部使用 ivars,您往往会遇到这些问题。如果没有访问器,您需要审核您直接分配 ivar 的每个位置,并确保您正确释放旧值。

如果可能的话,转换为 ARC 当然是推荐的解决方案。

于 2013-09-04T18:10:53.103 回答