1

ログ機能があります:

#define LOGERROR(err) if(err) {                     \
    LOGTRACE(@"[NSError] %s (%d): (%d:%@) Reason: %@",  \
        __PRETTY_FUNCTION__,                            \
        __LINE__,                                       \
        err.code,                                       \
        err.domain,                                     \
        err.localizedDescription)                       \
}

で呼び出すと

LOGERROR(playerItem.error);

「NSInteger をフォーマット引数として使用しないでください。明示的なキャストを long に追加してください」という警告が表示されます。

Xcode の autofix は LOGERROR の前に %ld を挿入しますが、これは間違っています。

この警告は、 https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html__LINE__によるとint を返すの使用によるものだと思います。

この呼び出しから警告を削除するにはどうすればよいですか?

4

1 に答える 1

1

私がコメントで与えた答えを形式化するために:

err.codeコンパイラは、NSInteger を返すの使用について不平を言っています。long:にキャストしてから、フォーマット文字列で(long)(err.code)使用します。%ld

于 2014-11-04T19:23:41.663 に答える