iOS 64位转换在具有va_列表的方法中不起作用
我正在尝试使iOS应用程序为64位做好准备。 我得到了一个方法,它使用枚举中的条目为我构建一个字符串。此方法中的参数在计数中可以是可变的。 该方法在32位下运行良好,但在64位下,我的for循环无法正确结束 下面是.h中的一些代码: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
#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];