簡體   English   中英

關於隱式轉換失去整數精度的警告

[英]Warning about Implicit conversion loses integer precision

static id SLRandomValueFromArray(NSArray *array) {
    if ([array count] == 0) {
        return nil;
    }

    return [array objectAtIndex:(NSUInteger)arc4random_uniform([array count])]; // WARNING HERE
}

警告說

Implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'u_int32_t' (aka 'unsigned int')

我以前從未遇到過此警告,也不確定如何使用 Xcode 7 和 iOS 8 解決此問題

將您的代碼更改為此

[array objectAtIndex:arc4random_uniform((u_int32_t)[array count])]

原因:

這是stdlib.h中的arc4random_uniform ,它的輸入是u_int32_t

u_int32_t arc4random_uniform(u_int32_t /*upper_bound*/)

但是[array count]返回 NSUInteger,所以你需要轉換

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM