3
在Xcode 4.6中,鏗鏘靜態分析器警告我有關「調用CFRelease中的空指針參數」。Clang靜態分析器警告「調用CFRelease中的空指針參數」
這裏的分析預警的截圖:
這裏就是你要複製&的情況下,代碼貼吧:
- (void)test
{
CFUUIDRef aUUID = CFUUIDCreate(kCFAllocatorDefault);
[self setUUID:aUUID];
CFRelease(aUUID);
}
- (void)setUUID:(CFUUIDRef)uuid
{
_uuid = uuid ? CFRetain(uuid) : CFUUIDCreate(kCFAllocatorDefault);
}
我不明白爲什麼它是警告我。 aUUID
永遠不能是空指針,可以嗎?我已經學會了比我使用的工具更不信任自己,所以我在這裏問。如果有人向我解釋我錯過了什麼,我會很高興。
'如果分配失敗,'CFUUIDCreate()'可能返回'NULL',但分析器警告的邏輯錯誤。 '-UUID'在'-setUUID:'中沒有改變,所以無論uuid是否爲空,'aUUID'仍然可以爲空。 –