17

コンパイル エラーが発生します。

error: convenience initializer missing a 'self' call to another initializer [-Werror,-Wobjc-designated-initializers]

コンパイル チェック済みの指定された初期化子は良いことかもしれませんが、今それを処理したくない場合は、どうすればこれをオフにできますか?

4

2 に答える 2

18

方法 1

あなたのプロジェクトでは:

  1. ターゲットのビルド設定を編集します (⌘-1、プロジェクトを選択、またはApple docsを参照)。
  2. 「その他の警告フラグ」を検索します。 ここで、よ
  3. を追加し-Wno-objc-designated-initializersます。

これとファイルごとの組み合わせ、またはclang診断のプッシュとポップを組み合わせて実行することもでき-Wobjc-designated-initializersます(以下の@bandejapaisaの「方法3」の回答を参照)。

方法 2

このメソッドを使用すると、Xcode 5 と 6 の間で前後に切り替えることができ、指定された初期化子のものを修正するためのリマインダーも提供されます。

iOS 開発の場合、これを.pch(プリコンパイル済みヘッダー) ファイルに入れます。

#ifdef __IPHONE_8_0
    // suppress these errors until we are ready to handle them
    #pragma message "Ignoring designated initializer warnings"
    #pragma clang diagnostic ignored "-Wobjc-designated-initializers"
#else
    // temporarily define an empty NS_DESIGNATED_INITIALIZER so we can use now,
    // will be ready for iOS8 SDK
    #define NS_DESIGNATED_INITIALIZER
#endif

OS X 10.10のアナログはです。__IPHONE_8_0__MAC_10_10

なんで?

これらのメッセージが存在する理由に興味がある場合は、この SO 回答 またはこれらのApple docsを確認してください。

于 2014-08-21T15:00:53.933 に答える