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

时间:2016-10-13 07:49:52

标签: objective-c

我在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);
    });

}

1 个答案:

答案 0 :(得分:1)

arc4random_uniform返回uint32_t,其值为0到2 ^ 32 - 1.您尝试将其存储在NSInteger中,在32位系统上的范围为-2 ^ 31到+ 2 ^ 31 - 1.这可以不行。