- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在将我的 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/
我是一名优秀的程序员,十分优秀!