Ответ 1
обойти его, инициализируя inbuf пустым массивом char:
unsigned char inbuf[4] = {};
unsigned char outbuf[3];
Я использовал Twitter-OAuth-iPhone для синхронизации сообщения в своем приложении. Все в порядке iOS4.
После обновления до iOS5 выберите меню "Продукт" > "Анализ" и получите несколько предупреждений.
В NSData + Base64.m, Предупреждение ' Левый операнд' & ' это значение для мусора
Коды здесь:
if( ixinbuf == 4 ) {
ixinbuf = 0;
outbuf [0] = ( inbuf[0] << 2 ) | ( ( inbuf[1] & 0x30) >> 4 );
outbuf [1] = ( ( inbuf[1] & 0x0F ) << 4 ) | ( ( inbuf[2] & 0x3C ) >> 2 );
outbuf [2] = ( ( inbuf[2] & 0x03 ) << 6 ) | ( inbuf[3] & 0x3F );
for( i = 0; i < ctcharsinbuf; i++ )
[mutableData appendBytes:&outbuf[i] length:1];
}
И есть другое сообщение об ошибке:
Извините, что я новичок и понятия не имею об этих проблемах.
Не могли бы вы помочь мне исправить это?
Многие СПАСИБО!
Изменить ------------
Снимок экрана цикла Logic:
удаление мертвой ссылки ImageShack
Полные коды: https://github.com/bengottlieb/Twitter-OAuth-iPhone/blob/master/Twitter+OAuth/MGTwitterEngine/NSData+Base64.m
Спасибо за любое предложение!
обойти его, инициализируя inbuf пустым массивом char:
unsigned char inbuf[4] = {};
unsigned char outbuf[3];
О, очень приятно.
Что говорит вам Кланг, так это то, что при некоторых особых обстоятельствах вы никогда не сможете инициализировать inbuf[1]
. Я считаю, что это может произойти для ввода, который выглядел примерно так:
a=
Здесь еще одна важная проблема - размеры inbuf
и outbuf
меняются местами. Должно быть char inbuf[4], outbuf[3]
, а не наоборот.
Вы можете добавить оператор if, чтобы убедиться, что inbuf[x]
имеет какое-то значение в нем
if (sizeof(inbuf[1]) > 0x1) outbuf [0] = ( inbuf[0] > 4 ); if (sizeof(inbuf[2]) > 0x1) outbuf [1] = ( ( inbuf[1] & 0x0F ) > 2 ); if (sizeof(inbuf[3]) > 0x1) outbuf [2] = ( ( inbuf[2] & 0x03 )
Я не уверен, хотя, если это "доказательство дурака".