Clang がすべての自動解放オブジェクトについて文句を言うのはなぜですか?

StackOverflow https://stackoverflow.com/questions/845080

  •  20-08-2019
  •  | 
  •  

質問

次の機能があります。

- (NSString *)urlEncodedValue {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                   kCFAllocatorDefault, 
                   (CFStringRef)self, 
                   NULL, 
                   CFSTR("?=&+/\r\n"), 
                   kCFStringEncodingUTF8
);

return [result autorelease];

}

Clang から次のような苦情が寄せられるのはなぜですか?

  • 1 関数「CFURLCreateStringByAddingPercentEscapes」を呼び出すと、+1 の保持カウントを持つ Core Foundation オブジェクトが返されます (参照を所有)
  • 2 オブジェクト送信 - 自動解放メッセージ
  • 3 オブジェクトは所有参照として呼び出し元に返されます (単一の保持カウントが呼び出し元に転送されます)
  • 4 オブジェクトが過剰に自動解放される:オブジェクトが送信されました -autorelease ですが、オブジェクトの (ローカルに表示される) 保持カウントがゼロです

私の知る限り、これはメモリ管理とオブジェクトの所有権に関する Apple のガイドラインに準拠しています。オブジェクトを明示的に解放する必要がありますか?このエラーは私のプロジェクトで 19 回発生しましたが、すべて同様の状況でした。私の何が間違っているのでしょうか?

役に立ちましたか?

解決

私は問題全体で誰がつまずいた場合にそれをここに掲示、自分の質問への答えを見つけました。私はチェッカー-0.198、チェッカー0.204レポートはそのような問題を使用していました。それは一時的な回帰だったようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top