我在Xcode6.1.1(用Xcode5.x制作)中打开了一个旧的游戏项目,在使用iPad空气模拟器的模拟器中启动它,在编译它之后发现在这个文件的许多行中的SoundOAL.m中有很多奇怪的警告。他们通常是这样说的:
"Incompatible pointer types passing 'NSUInteger *' (aka 'unsigned long *') to parameter of type 'ALuint *' (aka 'unsigned int *')"我想我知道它是什么意思(ps:应用程序工作没有问题),但我想知道是否有什么东西已经改变了,需要我来改变。我试图在iOS 8文档中找到一些东西,但我什么也读不到。也许有人更了解它?
发布于 2015-02-17 22:52:05
他们是警告,因为他们现在是64位的支持。你可以忽略它们,但是如果你看到任何意想不到的结果,你应该看看那里。
发布于 2016-07-05 20:01:13
由于iOS设备支持64位,因此NSUInteger是64位的。您的代码正在将一个指向NSUInteger的指针传递给一个接受ALuint的方法,在al.h中将其定义为32位:
/** unsigned 32-bit integer */
typedef unsigned int ALuint;要删除编译器警告,请将NSUInteger变量类型更改为ALuint或在适当的地方强制转换它们,例如:
alSourceStop((ALuint)sourceID);https://stackoverflow.com/questions/28564129
复制相似问题