我最近更新了Xcode,并收到此警告。有人可以帮我解决它。隐式转换将失去整数精度:将'NSUInteger'(aka'unsigned long')转换为'int'
- (UIImage *)reflectedImageRepresentationWithHeight:(NSUInteger)height {
CGContextRef mainViewContentContext;
CGColorSpaceRef colorSpace;
colorSpace = CGColorSpaceCreateDeviceRGB();
// create a bitmap graphics context the size of the image
mainViewContentContext = CGBitmapContextCreate (NULL, self.bounds.size.width,height, 8,0, colorSpace, kCGImageAlphaPremultipliedLast);
// create a 2 bit CGImage containing a gradient that will be used for masking the
// main view content to create the 'fade' of the reflection. The CGImageCreateWithMask
// function will stretch the bitmap image as required, so we can create a 1 pixel wide gradient
// WARING IS CAUSED BY LINE BELOW - height
CGImageRef gradientMaskImage = AEViewCreateGradientImage(1, height); // Implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'int'
最佳答案
我不知道函数AEViewCreateGradientImage,但是我敢打赌第二个参数采用的是int而不是NSUInteger。 NSUInteger的类型定义为无符号长,因此这就是收到警告的原因。传递一个int而不是NSUInteger,您的警告将消失。您可能可以将in而不是NSUInteger传递给您的方法。
编辑
我看了一下Apple的示例代码,然后就您所看到的内容进行扩展。基本上是因为编写示例代码时,NSUInteger可能被类型定义为无符号的int,因此它们不会收到警告。 XCode 5.1已经向前发展,现在它的类型定义为无符号长型。我不想在这里重新发明轮子,与此相关的有很多堆栈溢出帖子,例如When to use NSInteger vs. int
关于ios - 隐式转换失去整数精度:TheElements-Apple示例代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23450825/