2014-11-13 3 views
-1

Я получаю предупреждение как «неявное преобразование теряет целочисленную точность долго долго неподписанных долгое» в этой строке коданеявное преобразование теряет точность ИОС

ALAssetRepresentation *rep = [appdele.sharedArrays[j] defaultRepresentation]; 

Byte *buffer = (Byte*)malloc(rep.size); 

и ниже линии дают предупреждение «» Неявное преобразование теряет целочисленную точность долго долго NSInteger ' в этой строке кода '

NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil]; 

как я могу удалить эти предупреждения?

ответ

2

Сигнатура этого метода:

- (NSUInteger)getBytes:(uint8_t *)buffer 
      fromOffset:(long long)offset 
       length:(NSUInteger)length 
       error:(NSError **)error 

Вы используете 0.0 для offset, который является буквальным double; вместо этого используйте 0LL, который является буквальным long long.

Кроме того, по неизвестной причине, ALAssetRepresentation.size является long long, но этот метод ожидать length, как NSUInteger, так что требуется бросок:

NSUInteger buffered = [rep getBytes:buffer 
         fromOffset:0LL 
          length:(NSUInteger)rep.size 
           error:nil]; 
+0

я попробовал ваш код, но его все еще дает мне такое же предупреждение в длину: rep.size. переменная j, объявленная в общих массивах [j], является int. – user2728950

+0

@ пользователь2728950 OK исправленный. – trojanfoe

+0

+1 ... hey thanx .. ur код работал как шарм – user2728950

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