objective-c - 将 NSNumber 值与定义的 int 进行比较

标签 objective-c ios

我正在尝试存储一个常量 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/

相关文章:

objective-c - 使用音频队列服务的示例

objective-c - UINavigationItem 后退按钮触摸区域太大

ios - 快速进行 iOS 单元测试

ios - 如何在 iOS 中创建具有更好性能的复杂动画?

ios - 从 NSData 中查找视频类型

ios - 如何在调用某人时删除 iOS 应用程序中的弹出窗口?

objective-c - 使用 QTKit 设置电影元数据

ios - 显示 Coreplot 条形图值而不进行选择

ios - viewWithTag 可以使用有限的时间

ios - 如何设置动态宽度 UICollectionViewCell