12

NSParameterAssert が使用されている場所でコンパイル エラーが発生します。例えば:

-(instancetype)initForPlot:(CPTPlot *)plot withFunction:(CPTDataSourceFunction)function
{
    NSParameterAssert([plot isKindOfClass:[CPTScatterPlot class]]);
    NSParameterAssert(function);

    if ( (self = [self initForPlot:plot]) ) {
        dataSourceFunction = function;
    }
    return self;
}

コードは Xcode 6.2 で正常にコンパイルされますが、Xcode 6.3 では次のエラーが発生します。
/Users/xxxx/Project/App/Presentation/CorePlot/Source/CPTFunctionDataSource.m:110:5: Using %s directive in NSString which is being passed as a formatting argument to the formatting method

オンラインで調べましたが、エラー メッセージに関する情報は見つかりませんでした。
私が使用している一時的な修正は次のとおりです。

#undef NSParameterAssert
#define NSParameterAssert(condition)    ({\
do {\
_Pragma("clang diagnostic push")\
_Pragma("clang diagnostic ignored \"-Wcstring-format-directive\"")\
NSAssert((condition), @"Invalid parameter not satisfying: %s", #condition);\
_Pragma("clang diagnostic pop")\
} while(0);\
})

ただし、これにはより良い解決策があるはずです。

4

1 に答える 1

1

あなたがしなければならないのは、コアプロットライブラリを最新バージョンに更新することです(私にとってはうまくいきました)理由:

Coreplot git リポジトリ ( https://github.com/core-plot/core-plot/commits/master ) にアクセスすると、

コミット内で次を確認できます。

Commits on Feb 15, 2015
@eskroch
Fixed Xcode 6.3 beta build warnings.
eskroch authored on Feb 15

つまり、この問題は、この iOS 8.3 リリースよりかなり前の 2 月 15 日以降、ベータ版以降、既に修正されています。

于 2015-04-15T13:15:19.887 に答える