統計情報(30日間)


最新情報をツイート


人気の投稿

Xcode 4.6のレコメンド警告

このエントリーをはてなブックマークに追加

既存プロジェクトを Xcode4.6で読み込んだ時に出る追加設定に関する解説。

追加される設定は次の4つ。

CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;

CLANG_WARN_CONSTANT_CONVERSION
定数代入(変換)の問題を知らせてくれる。たとえばこんなケース。
NSInteger value = 4294967296;
このケースは long long→NSInteger変換となり、実際は 0が入ってしまう。この設定があると警告が出る。

CLANG_WARN_ENUM_CONVERSION
異なるEnum設定値を使った時に警告を出してくれる。たとえばこんなケース。
typedef enum
{
  UYLMagicUser = 0,
  UYLMagicAdmin = 1
} UYLMagicValue;

typedef enum
{
  UYLNonMagicUser = 10,
  UYLNonMagicAdmin = 11
} UYLNonMagicValue;
- (void)doSomeMagic:(UYLMagicValue)magicType
{
  //
}
と定義されていた時
[self doSomeMagic:UYLNonMagicAdmin];
とすると警告が出る。

CLANG_WARN_INT_CONVERSION
ことなる整数値をポインタ型へ代入する場合、たとえばこういうケースで警告が出る。
char *pointer = 1234;

CLANG_WARN__DUPLICATE_METHOD_MATCH
同じメソッド定義が複数あった場合の警告。


− - - -
試しに Xcode4.6で新規プロジェクトを作成するとすべてYESとなっていた。


Leave a Reply