2016-10-13 51 views
0

我在執行NSUInteger vs NSInteger時出現了有關衝突參數類型錯誤的問題。執行NSUInteger vs 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); 
    }); 

} 
+0

哪一行導致此問題? – Larme

回答

1

arc4random_uniform返回與從0到2^32值的uint32_t的 - 1.您嘗試存儲此在一個NSInteger,其中在32個系統具有範圍從-2^31〜+ 2^31 - 這是行不通的。

+0

非常感謝。問題解決了。我用過:randomNumber = arc4random()%range –