我正在尝试存储一个常量 int 值,以便在特定情况下进行比较。我的定义看起来像这样:
#define kApiSuccessCode 0
我有一个方法可以将状态码 (NSNumber
) 与此进行比较以给出 BOOL
结果:
- (BOOL)isSuccess {
return [self.statusCode isEqualToNumber:[NSNumber numberWithInt:kApiSuccessCode]];
}
我有一个合成的 NSNumber
属性,如下所示:
@property (nonatomic, strong) NSNumber *statusCode;
问题是执行被中断,原因:EXC_BAD_ACCESS
运行此代码时出现错误 - 我无法弄清楚为什么?这是比较 int 值的坏方法吗?谢谢
已解决:
原来我犯了一个基本错误,试图将 NSLog
设为 BOOL
值,即 NSLog(@"Does this work? %@", [response isSuccess])
。所以代码本身可以工作 - 但感谢大家提出的提高效率的建议!
最佳答案
我不知道为什么会发生崩溃,但为了回答您的其他问题,是的,这不是比较 int 值的好方法。
在 NSNumber
实例中存储值是有正当理由的,但在大多数情况下,这是多余的。事实上,如果您有一个 NSNumber
实例,只需使用 intValue
获取它的整数值并将其与原始值进行比较,而不是创建一个全新的实例。
如果你查看基础类,你会发现大多数时候,它们依赖于 NSInteger
原始类型而不是 NSNumber
实例。例如,NSURLResponse
类使用 NSInteger
返回 HTTP 状态代码。
关于objective-c - 将 NSNumber 值与定义的 int 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833873/