不理解'可能泄漏对象'错误

时间:2011-09-10 10:17:03

标签: iphone objective-c xcode memory-leaks

346 - NSFileManager *fileManager = [[NSFileManager alloc] init];
347 - [fileManager removeItemAtPath:[mediaSource.newMediaToDelete objectAtIndex:i] error:nil];
348 - [fileManager release];

错误指向348行并说:

  

'在第347行分配的对象的潜在泄漏'

我不明白这一点,显然第347行不是分配,第346行的分配已经发布。

4 个答案:

答案 0 :(得分:2)

避免在您自己的方法名称中使用'new'或'create'(除非它们返回我认为未自动释放的对象)。它混淆了静态分析仪。我遇到了这个问题,发现当我更改方法名称时它就消失了。

更新:我看到Bavarious已在评论中注意到这一点。

答案 1 :(得分:0)

可能在NSArray mediaSource.newMediaToDelete对象不自动释放?

答案 2 :(得分:0)

我尝试了以下代码并没有得到任何警告:

  NSInteger i = 0;
    NSArray *ax = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    [fileManager removeItemAtPath:[ax objectAtIndex:i] error:nil];
    [fileManager release];

因此必须使用返回的mediaSource.newMediaToDelete对象...

尝试一下var assignemnt,如:

x = [mediaSource.newMediaToDelete objectAtIndex:i];

它应该显示在那里......

答案 3 :(得分:0)

您是否尝试过单击错误消息本身?那些向您展示问题路径的箭头有时非常有用。我猜是导致消息的是mediaSource或newmediaToDelete对象。