ios - 为什么我在 Objective-C 中的枚举上收到类型冲突警告?

标签 ios objective-c cocoa-touch enums

这是我的 Constants.h:

@import Foundation;

typedef NS_ENUM(NSUInteger, BarcodeType) {
    kNormalBarcode,
    kNoBarcode,
    kGenericBarcode,
    kInvalidBarcode,
    kComicBarcode
};

@interface Constants : NSObject

@end

这是一个使用它的函数:

.h:

@interface Helper : NSObject

- (BarcodeType)barcodeType:(NSString *)barcode;

.m:

#import "Constants.h"
...

- (BarcodeType)barcodeType:(NSString *)barcode
{
   return kInvalidBarcode;
}

为什么我的函数会收到此警告,我需要更改什么来修复它?

Conflicting return type in implementation of 'getBarcodeType:': 'id' vs 'BarcodeType' (aka 'enum BarcodeType')

此代码似乎适用于旧版本的 Xcode。

谢谢!

最佳答案

检查您的 .h 文件。我的猜测是您对该方法的声明使用 id,这与您在返回类型 BarcodeType 的 .m 文件中的定义冲突。 NSEnum 值不是对象,因此 id 无效。您需要更正声明,以便返回类型与实现匹配。

关于ios - 为什么我在 Objective-C 中的枚举上收到类型冲突警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224962/

相关文章:

ios - 将 Realm 对象保存到数据库

ios - 如何在我的 iPhone 应用程序中显示我的应用程序的内存使用情况

ios - 使用 iOS 每 x 分钟发送一次 GPS 坐标 - Core Location 不会停止更新

ios - 创建带有图层和可点击边的 3D 立方体 - Objective-C

ios - 无法使用 CustomCell 填充 UITableView

objective-c - 按下工具栏按钮时 UIStoryboardPopoverSegue 关闭

iphone - 如何检测类的属性何时更改

ios - FMDB - 错误调用 sqlite3_step (21 : out of memory) rs

ios - 如何获取在prepareForSegue中启动segue的按钮?

iphone - 魔录iCloud更新核心数据