2015-11-12 4 views
1
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 и прошивкой 8

ответ

1

Измените код этого

[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, так что вам нужно бросить

Смежные вопросы