2013-04-24 50 views
2

我写了一些这样的代码,一个明显的泄漏,但铛静态分析仪didnot检测,为什么?

- (NSString*) caleSignParam:(NSMutableArray*)postData 
{ 
    NSMutableArray* keyArray = [[NSMutableArray alloc] initWithCapacity:50]; 

    ...... 
    NSArray* sortedKeys = [keyArray sortedArrayUsingComparator: 
         (NSComparator)^(NSString *obj1, NSString *obj2) { 
          return [obj1 compare:obj2 options:NSLiteralSearch]; 
         }]; 
    ...... 


    NSString* signStr = aString; 

    return signStr; 
} 

我忘了释放keyArray,以及使用非ARC,但是当我点击Xcode的菜单上的“分析”,它因此未检测keyArray的泄漏。

如果我评论“NSArray * sortedKeys = ...”的行,它可以检测keyArray的泄漏。

我不知道静态分析仪有什么问题。

我真的很感谢你的帮助。

回答

1

理解静态分析仪并不总是正确的,也不总是不正确的。它会引起误报和漏报。然而,默认设置使得误报的机率最小。在这种特殊情况下,我猜测分析仪没有足够的数据来确定keyArray

+0

谢谢你。我知道静态分析器在某些情况下无法检测到错误,有时会报告一个不是错误的错误。我真的很想知道为什么它不能检测到这种明显的泄漏。 – dx2ztm76 2013-04-24 05:40:55

相关问题