Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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位SDK的警告_Ios_Objective C_Iphone_32bit 64bit - Fatal编程技术网

Ios 删除64位SDK的警告

Ios 删除64位SDK的警告,ios,objective-c,iphone,32bit-64bit,Ios,Objective C,Iphone,32bit 64bit,我想现在每个人都将使用Xcode 5.1及以上版本。一旦我们将64位支持添加到有效的体系结构中,编译器就会抛出与64位数据类型相关的警告。我正在开发iOS6.0支持的应用程序。如果我更改64位的数据类型,它在32位设备中可以正常工作吗?因为,将数据类型更改为64位将为32位创建编译器警告。。 提前感谢。如果您真的担心数据类型的大小,那么在编码中要明确,并使用标准类型,无论编译器如何都可以工作 uint8_t, uint16_t, uint32_t and uint64_t int8_t,int1

我想现在每个人都将使用Xcode 5.1及以上版本。一旦我们将64位支持添加到有效的体系结构中,编译器就会抛出与64位数据类型相关的警告。我正在开发iOS6.0支持的应用程序。如果我更改64位的数据类型,它在32位设备中可以正常工作吗?因为,将数据类型更改为64位将为32位创建编译器警告。。
提前感谢。

如果您真的担心数据类型的大小,那么在编码中要明确,并使用标准类型,无论编译器如何都可以工作

uint8_t, uint16_t, uint32_t and uint64_t
int8_t,int16_t,int32_t and int64_t
对于64位和32位,您真正需要担心的唯一地方是,您是否在编码中对结构的字节对齐进行了假设。但是,解决方案是也使用标准类型

对于像NSLog这样在使用NSInteger类型时会出现很多错误的情况,您应该将它们转换为您希望它们在format语句中的含义。xcode通常会为您修复这些问题


您是否有任何担心的具体32/64示例?

您可能需要阅读《cocoa touch应用程序64位转换指南》,但不应阅读。并尝试使用不会受64位或32位更改影响的数据类型。比如使用NSInteger而不是普通的int等等……没有具体的例子,但是我收到了很多警告,要求32位转换64位类型。所以,我只是想确保,如果我按照xcode的建议进行转换,在32位设备上运行时不会对应用程序产生任何影响。你能举几个例子,让我看看它是什么类型的警告,在什么情况下?我得到的大多数警告都在NSLog上,我让xcode修复了这些警告。如果错误与混合使用short、int、long、long等有关,请尝试不混合int和long(使用long)或改用标准类型。从32位到64位不太可能丢失任何东西,因为它会增加数字的范围。如回答中所述,假设结构对齐偏移量、指针大小相同,并且从32/64位上的不同设备向服务器读取/写入二进制数据,这才是真正的问题所在。例如:1。警告:隐式转换将丢失整数精度:“NSInteger”(也称为“long”)到“int-按钮标记int.2”。警告:隐式转换将丢失整数精度:“NSUInteger”(也称为“unsigned long”)到“int”-[array count]将其分配给int 3。警告:“NSInteger”类型的值不应用作格式参数;将显式强制转换添加到'long'insteadOk,这是有意义的,不会给您带来问题,因为您的代码似乎可以使用int。您最好使用标准类型或使用long而不是int。格式设置会引发问题,因为它的编码可能期望NSInteger和NSInteger将来可能会更改大小,可能是在8^中出现128位时。对于这些强制转换为(长)或(无符号长)。不过,我的建议是使用标准类型或NSInteger和NSInteger。