NSAssert未申报首先使用为什么?

时间:2011-07-29 07:51:39

标签: iphone ios archive llvm nsassert

我在levelManager.m中使用下面的代码从plist中读取值,但是当我将Archive上传到itunes(AppStore)时,我收到错误。为什么?

代码:

- (float)floatForProp:(NSString *)prop {
NSNumber * retval = (NSNumber *) [_curStage objectForKey:prop];
NSAssert (retval != nil, @"Couldn't find prop %@", prop);
return retval.floatValue;
}

错误:

NSAssert未声明的首次使用

注意我注意到xcode认为我给的是NSAssert 3参数而不是2

3 个答案:

答案 0 :(得分:2)

您可以使用其中一个NSAssert变种,例如NSAssert1

#define NSAssert1(condition, desc, arg1)

所以:

#import <Foundation/Foundation.h>

- (float)floatForProp:(NSString *)prop
{
  NSNumber * retval = (NSNumber *) [_curStage objectForKey:prop];
  NSAssert1 (retval != nil, @"Couldn't find prop %@", prop);
  return retval.floatValue;
}

感兴趣的相关post和Apple的Assertions and Logging Programming Guide

答案 1 :(得分:1)

将其替换为

NSAssert (retval != nil, ([NSString stringWithFormat:@"Couldn't find prop %@", prop]));

答案 2 :(得分:0)

如果你认为你在考虑给出三个参数,请使用:

NSAssert (retval != nil, [NSString stringWithFormat:@"Couldn't find prop %@", prop]);