2

我写了一些这样的代码,

- (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的泄漏。

我想知道静态分析器有什么问题。

我真的很感谢你的帮助。

4

1 回答 1

1

重要的是要了解静态分析器并不总是正确的,也不总是不正确的。它可以抛出误报和误报。然而,默认设置使得误报的可能性最小。在这种特殊情况下,我猜分析器没有足够的数据来明确决定 keyArray 会发生什么

于 2013-04-24T05:34:28.883 回答