使用Xcode 6.3的NSParameterAssert编译错误

时间:2015-04-09 21:55:45

标签: ios objective-c xcode6.3

我在使用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);\
})

应该有一个更好的解决方案。

1 个答案:

答案 0 :(得分:1)

您所要做的就是将核心图库更新到最新版本(对我有用),因为:

如果你去Coreplot git repo(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

这意味着这个问题已经从2月15日开始修复,这是自iOS 8.3发布以来的很长一段时间以来的问题。