Abd*_*mer 8 64-bit enums objective-c ios
我正在将我的iOS应用程序转换为64位.我安装了最新的Xcode 5.1(beta 4).
当我编译应用程序时,我收到了超过100个警告,其中大部分很容易修复.但是,我对以下代码发出警告:
+ (CommentResponseStatus)commentReponseStatusCodeWithStatusString:(NSString *)_status
{
NSArray *commentStatusString = [NSArray arrayWithObjects:@"success", @"needConfirmation", @"stopped", nil];
return [commentStatusString indexOfObject:_status];
}
Run Code Online (Sandbox Code Playgroud)
在哪里CommentResponseStatus声明:
typedef enum {
success,
needConfirmation,
stopped
} CommentResponseStatus;
Run Code Online (Sandbox Code Playgroud)
我有一个警告"隐式转换失去整数精度:' NSUInteger'(又名' unsigned long')到' CommentResponseStatus'"
警告就行了 return [commentStatusString indexOfObject:_status];
在NSArray我们有- (NSUInteger)indexOfObject:(id)anObject;
我对此警告感到困惑,现在不知道如何修复它.任何快速帮助将不胜感激.
Man*_*ani 17
根据苹果文档关于64位的变化.
枚举也是类型的:在LLVM编译器中,枚举类型可以定义枚举的大小.这意味着某些枚举类型的大小也可能比您预期的大.与所有其他情况一样,解决方案是不对数据类型的大小做出任何假设.而是将任何枚举值分配给具有适当数据类型的变量
要解决此问题,请使用以下语法类型创建枚举.
typedef NS_ENUM(NSUInteger, CommentResponseStatus) {
success,
needConfirmation,
stopped
};
Run Code Online (Sandbox Code Playgroud)
要么
typedef enum CommentResponseStatus : NSUInteger {
success,
needConfirmation,
stopped
} CommentResponseStatus;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |