gpt4 book ai didi

iphone - 调用类别方法时发送到实例的无法识别的选择器

转载 作者:太空狗 更新时间:2023-10-30 03:57:17 26 4
gpt4 key购买 nike

我有一个静态库,用于加密我在项目中使用的 XML 序列化。到目前为止,这段代码运行良好。但是当我将它包含在我最新的项目中时,我得到了一个错误,我知道当我调用的对象没有正确分配时通常会出现这个错误,这里不是这种情况,NSLog 返回 NSData 用于我的加密。

可能是什么问题?

我得到的错误是

-[NSConcreteData base64EncodingWithLineLength:]: unrecognized selector sent to instance 0x1c9150

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteData base64EncodingWithLineLength:]: unrecognized selector sent to instance 0x1c9150'

这是我的代码:

NSData * encryptedMsg =[crypto encrypt:MsgEnc key:[accessdata->Certificate dataUsingEncoding:NSUTF8StringEncoding] padding:&padding];
NSLog(@"encryptedMsg %@",encryptedMsg);
NSString * msg = [NSString stringWithFormat:@"%@", [encryptedMsg base64EncodingWithLineLength:0]];

最佳答案

据我所知,base64EncodingWithLineLength 是一种未在 NSData 中定义但在名为 NSData+Base64.h 的类别中定义的方法.报错的原因是你没有将该类别添加到你的项目中,以至于调用了该方法,却找不到。

因此您应该将“NSData+Base64.*”文件添加到您的项目中。从 here 获取它们.

编辑:

由于 OP 提到该类别包含在静态库中并假设静态库已正确链接,因此解决此问题的可能方法是添加

-ObjC

标记到build设置中的“其他链接器标记”。此标志将强制加载 Objective C 类别中的所有符号,防止它们通过链接器被优化掉。

关于iphone - 调用类别方法时发送到实例的无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com