我有一个关于NSUInteger与NSInteger实现中参数类型冲突的错误问题。
我见过很多类似的问题,似乎最常见的问题发生在定义带有*字符的指针时。
Integer是一个基本类型,我根本没有使用指针,那么问题在哪里?
- (void) guessNumber: (NSInteger)number withRange:(NSInteger)range{
dispatch_queue_t queue = dispatch_queue_create("com.alex.guessnumber.queue", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
double startTime = CFAbsoluteTimeGetCurrent();
NSInteger randomNumber;
NSInteger range;
while (randomNumber != number) {
randomNumber = arc4random_uniform(range);
}
NSLog(@"Student %@ guessed number %d in %f", self.name, randomNumber, CFAbsoluteTimeGetCurrent() - startTime);
});
}
arc4random_uniform返回值为0到2^32 - 1的uint32_t。你尝试将其存储在一个NSInteger中,它在32位系统上的范围从-2^31到+2^31 - 1。这行不通。