3

Xcode 4.6 では、clang 静的アナライザーが「CFRelease の呼び出しで Null ポインター引数」について警告します。

アナライザーの警告のスクリーンショットを次に示します。

Clang 静的アナライザーの警告

コピーして貼り付ける場合のコードは次のとおりです。

- (void)test
{
    CFUUIDRef aUUID = CFUUIDCreate(kCFAllocatorDefault);
    [self setUUID:aUUID];
    CFRelease(aUUID);
}

- (void)setUUID:(CFUUIDRef)uuid
{
    _uuid = uuid ? CFRetain(uuid) : CFUUIDCreate(kCFAllocatorDefault);
}

なぜ私に警告しているのかわかりません。aUUIDヌルポインターになることはできませんよね?使用しているツールよりもむしろ自分自身を信用しないことを学んだので、ここで質問しています。誰かが私に欠けているものを説明してくれたらとてもうれしいです。

4

1 に答える 1

0

割り当てられた値を返すものは、理論的には NULL を返す可能性があります。

アナライザーは、複数の可能な実行パスに従います。「aUUID が NULL である」というシナリオに従うと、最終的には NULL オブジェクトの CFRelease になります。

それsetUUIDが原因ではなく、問題が発見された経路に過ぎないので、それが図示されている経路です。

于 2013-04-26T19:59:29.637 に答える