gpt4 book ai didi

ios - 将应用程序转换为 64 位时对 typedef 枚举发出警告

转载 作者:可可西里 更新时间:2023-11-01 03:06:12 24 4
gpt4 key购买 nike

我正在将我的 iOS 应用程序转换为 64 位。我安装了最新的 Xcode 5.1 (beta 4)。

当我编译该应用程序时,我收到了 100 多个警告,其中大部分都非常容易修复。但是,我对以下代码发出警告:

+ (CommentResponseStatus)commentReponseStatusCodeWithStatusString:(NSString *)_status
{
NSArray *commentStatusString = [NSArray arrayWithObjects:@"success", @"needConfirmation", @"stopped", nil];

return [commentStatusString indexOfObject:_status];
}

CommentResponseStatus 声明为:

typedef enum {
success,
needConfirmation,
stopped
} CommentResponseStatus;

我有一个警告“隐式转换失去整数精度:'NSUInteger'(又名'unsigned long')到'CommentResponseStatus'”

警告在行 return [commentStatusString indexOfObject:_status];

NSArray 中我们有 - (NSUInteger)indexOfObject:(id)anObject;

我对这个警告感到困惑,现在不知道如何解决它。任何快速帮助将不胜感激。

最佳答案

根据 apple docs关于 64 位更改。

Enumerations Are Also Typed : In the LLVM compiler, enumerated types can define the size of the enumeration. This means that some enumerated types may also have a size that is larger than you expect. The solution, as in all the other cases, is to make no assumptions about a data type’s size. Instead, assign any enumerated values to a variable with the proper data type

要解决此问题,请按以下语法创建带类型的枚举

typedef NS_ENUM(NSUInteger, CommentResponseStatus) {
success,
needConfirmation,
stopped
};

typedef enum CommentResponseStatus : NSUInteger {
success,
needConfirmation,
stopped
} CommentResponseStatus;

关于ios - 将应用程序转换为 64 位时对 typedef 枚举发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com