2013-05-17 1 views
1

Я хочу интегрировать flickr api для загрузки изображения через приложение iphone на сайт flickr. Я загрузил код привязки & Runfrom github. Я включил один и тот же SDK-код в свой проект. Но он показывает мне ошибку при преобразовании в ARC. У меня возникли проблемы с чтением. Эти ошибки в файле OFUtilities.mFlickr SDK не преобразован в ARC

static NSData *OFSha1(NSData *inData) 
{ 
NSMutableData *result = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH]; 
CC_SHA1_CTX context; 
CC_SHA1_Init(&context); 
CC_SHA1_Update(&context, [inData bytes], (CC_LONG)[inData length]); 
CC_SHA1_Final([result mutableBytes], &context); 
return result; 
} 

В вышеуказанном способе я получаю эту ошибку «No Matching Функция для вызова CC_SHA1_Final»

NSString *OFHMACSha1Base64(NSString *inKey, NSString *inMessage) 
{ 
NSData *keyData = [inKey dataUsingEncoding:NSUTF8StringEncoding]; 

if ([keyData length] > CC_SHA1_BLOCK_BYTES) { 
    keyData = OFSha1(keyData); 
} 

if ([keyData length] < CC_SHA1_BLOCK_BYTES) { 
    NSUInteger padSize = CC_SHA1_BLOCK_BYTES - [keyData length]; 

    NSMutableData *paddedData = [NSMutableData dataWithData:keyData]; 
    [paddedData appendData:[NSMutableData dataWithLength:padSize]]; 
    keyData = paddedData; 
} 

NSMutableData *oKeyPad = [NSMutableData dataWithLength:CC_SHA1_BLOCK_BYTES]; 
NSMutableData *iKeyPad = [NSMutableData dataWithLength:CC_SHA1_BLOCK_BYTES]; 

const uint8_t *kdPtr = [keyData bytes]; 
uint8_t *okpPtr = [oKeyPad mutableBytes]; 
uint8_t *ikpPtr = [iKeyPad mutableBytes]; 

memset(okpPtr, 0x5c, CC_SHA1_BLOCK_BYTES); 
memset(ikpPtr, 0x36, CC_SHA1_BLOCK_BYTES); 

NSUInteger i; 
for (i = 0; i < CC_SHA1_BLOCK_BYTES; i++) { 
    okpPtr[i] = okpPtr[i]^kdPtr[i]; 
    ikpPtr[i] = ikpPtr[i]^kdPtr[i]; 
} 

NSData *msgData = [inMessage dataUsingEncoding:NSUTF8StringEncoding]; 

NSMutableData *innerData = [NSMutableData dataWithData:iKeyPad]; 
[innerData appendData:msgData]; 
NSData *innerDataHashed = OFSha1(innerData); 

NSMutableData *outerData = [NSMutableData dataWithData:oKeyPad]; 
[outerData appendData:innerDataHashed]; 

NSData *outerHashedData = OFSha1(outerData); 


size_t outputLength; 
char *outputBuffer = NewBase64Encode([outerHashedData bytes], [outerHashedData length], true, &outputLength); 

NSString *result = [[[NSString alloc] initWithBytes:outputBuffer length:outputLength encoding:NSASCIIStringEncoding] autorelease]; 
free(outputBuffer); 
return result; 
} 

здесь я уже получаю ошибку является» canot инициализирует переменную типа «const uint8_t» со значением r значения типа const «

Пожалуйста, помогите мне. Заранее спасибо.

ответ

1

Иногда преобразование не дуги код arc не будет успешным. Если ваша внешняя инфраструктура не поддерживает ARC, лучше не пытаться преобразовать ее. вместо этого установите флаг компилятора -fno-objc-arc для этих конкретных файлов для компиляции без ARC.

+0

спасибо за ваш ответ. Но здесь я включил flickr snap и запустил код в другой проект вместо того, чтобы преобразовать его в ARC, он получил эти ошибки – Vasu