Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 64位转换在具有va_列表的方法中不起作用_Ios_64 Bit_Variadic Functions - Fatal编程技术网

iOS 64位转换在具有va_列表的方法中不起作用

iOS 64位转换在具有va_列表的方法中不起作用,ios,64-bit,variadic-functions,Ios,64 Bit,Variadic Functions,我正在尝试使iOS应用程序为64位做好准备。 我得到了一个方法,它使用枚举中的条目为我构建一个字符串。此方法中的参数在计数中可以是可变的。 该方法在32位下运行良好,但在64位下,我的for循环无法正确结束 下面是.h中的一些代码: #define enumToString(intVal) \ [NSString stringWithFormat: @"%ld", intVal] #define ENUM_END -1 typedef enum _MYENTRIES { entry1

我正在尝试使iOS应用程序为64位做好准备。 我得到了一个方法,它使用枚举中的条目为我构建一个字符串。此方法中的参数在计数中可以是可变的。 该方法在32位下运行良好,但在64位下,我的for循环无法正确结束

下面是.h中的一些代码:

#define enumToString(intVal) \
[NSString stringWithFormat: @"%ld", intVal]

#define ENUM_END -1

typedef enum _MYENTRIES
{
    entry1,
    entry2,
    entry3
}  MYENTRIES;
typedef NSUInteger MYENTRY;
我的崩溃方法:(循环必须结束,但它没有结束)

方法调用示例:

myString = [myClass getMyString: entry1, entry3, ENUM_END , nil];
希望你能帮助我


最好的问候

这是因为MYENTRY和MYENTRY是不同的类型。一个是32位,另一个是64位。传递32位值并将其作为64位读取是行不通的

这就是NS_ENUM宏的作用。谷歌,了解它,使用它。您还将遇到以下问题:ENUM_END与MYENTRY或MYENTRY(它是一个int)的类型不同。除非您可以背诵int和unsigned long之间的类型转换规则(您不能背诵),否则我建议您将其作为枚举的一部分

myString = [myClass getMyString: entry1, entry3, ENUM_END , nil];