我在iOS应用程序中有以下代码,它使用Accelerate框架:
NSUInteger radius = floor(inputRadius * 3. * sqrt(2 * M_PI) / 4 + 0.5);
if (radius % 2 != 1) {
radius += 1; // force radius to be odd so that the three box-blur methodology works.
}
vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
Xcode在最后一行显示警告:
隐式转换失去整数精度:'NSUInteger'(又名 'unsigned long')到'uint32_t'(又名'unsigned int')
我可以用uint32_t替换NSUInteger,即使我将这个项目的其余部分转换为64位和32位安全代码(主要是NSInteger而不是int,并且生成的方法定义发生了变化)。
如果没有,我如何解决NSUInteger的问题?
答案 0 :(得分:3)
您有两种选择:
radius
改为uint32_t
而不是NSUInteger
。radius
永远不会太大,请在致电radius
时将uint32_t
投提vImageBoxConvolve_ARGB8888
。