• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - Flickr SDK 未转换为 ARC

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:58:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想集成 flickr api 以通过我的 iphone 应用程序将图像上传到 flickr 站点。我已经从 github 下载了代码 snap&Run。我在我的项目中集成了相同的 SDK 代码。但它在转换为 ARC 时向我显示错误。我有读线问题。 这些错误在 OFUtilities.m 文件中

  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 Function for call 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 dataWithDataKeyPad];
[outerData appendData:innerDataHashed];

NSData *outerHashedData = OFSha1(outerData);


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

NSString *result = [[[NSString alloc] initWithBytesutputBuffer lengthutputLength encoding:NSASCIIStringEncoding] autorelease];
free(outputBuffer);
return result;
}

这里我得到的错误是“无法使用 const 类型的 r 值初始化 'const uint8_t' 类型的变量”

请帮助我。提前致谢。



Best Answer-推荐答案


有时将非弧代码转换为不会成功。如果您的外部框架不支持 ARC,最好不要尝试转换。而是为该特定文件设置编译器标志 -fno-objc-arc 以在没有 ARC 的情况下进行编译。

关于iphone - Flickr SDK 未转换为 ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16605525/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap