[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
2022-02-14 21:50:33
質問
NSLogの行に警告が表示されます。
Format string is not a string literal(potentially insecure)
次のコードから
NSMutableString *MarqueeMessage = [[NSMutableString alloc]init];
[MarqueeMessage appendString:@"Abc"];
NSString *immutableString = MarqueeMessage;
NSLog(immutableString);
この行を以下のコードに変更したら、警告が出なくなったのはなぜでしょうか?
NSLog(immutableString,nil);
解決方法は?
これは、コンパイラが、入力文字列にパーセント文字が含まれることを懸念して、「おい、何をやっているか本当にわかっているのか」と言いたいだけなのです。
%
そして、それに対応する引数を指定していない。 明らかに、あなたが提供したコードからするとそうではないのですが、コンパイラはそれを理解するほど賢くないのです。
引数(数値、文字列、nilなど何でもよい)を追加することで、自分が何をしているのかわかっているとコンパイラーに思わせるのです。 コンパイラーを満足させる別の方法は、次のようなコードで文字列を出力することだ。
NSLog( @"%@", immutableString );
この方法の利点は,文字列中の予期せぬ書式指定子(たとえば
%s
を使用すると、問題が発生することはありません。
関連
-
[解決済み] イニシャライザーの要素がコンパイル時定数でない
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] クラス vs. #インポート
-
[解決済み] Objective-Cで抽象クラスを作成する
-
[解決済み] objectForKeyとvalueForKeyの違い?
-
[解決済み】Objective-Cのコードをユニットテストするのに最適な方法は何ですか?
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】ブロック宣言の構文リスト
-
[解決済み】タイトル変更時に不要なUIButtonのアニメーションを停止させる方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] NSTaggedPointerStringをNSStringに変換する。
-
[解決済み] Objective-Cの#importと#includeの違いは何ですか?
-
[解決済み] Objective-Cは構造体の使用を禁じていますか?
-
[解決済み] インスタンスに送信されたセレクタが認識されない」を解決するには?
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] ブロック(__block)」というキーワードはどういう意味ですか?
-
[解決済み】iOS 7で非推奨のsizeWithFont:の代わりになるものは?
-
[解決済み】isEqual:とハッシュをオーバーライドするためのベストプラクティス
-
[解決済み】NSStringが特定の文字で始まるかどうかを確認する方法
-
[解決済み】Swiftコンパイラーエラー。"フレームワークモジュール内の非モジュラーヘッダー"