在NSUInteger和NSInteger的实现中冲突的参数类型



我有一个关于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。这行不通。

最新更新