Rad*_*adu 4 iphone xcode objective-c
我有一个静态库,我用于加密XML序列化,我在我的项目中使用.这段代码到目前为止完美无缺.但是当我把它包含在我的最新项目中时我得到了一个错误,我知道当我调用的对象没有正确分配时通常会出现这个错误.在这种情况下NSLog不会返回NSData进行加密.
可能是什么问题呢?
我得到的错误是
- [NSConcreteData base64EncodingWithLineLength:]:无法识别的选择器发送到实例0x1c9150
*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSConcreteData base64EncodingWithLineLength:]:无法识别的选择器发送到实例0x1c9150'
这是我的代码:
NSData * encryptedMsg =[crypto encrypt:MsgEnc key:[accessdata->Certificate dataUsingEncoding:NSUTF8StringEncoding] padding:&padding];
NSLog(@"encryptedMsg %@",encryptedMsg);
NSString * msg = [NSString stringWithFormat:@"%@", [encryptedMsg base64EncodingWithLineLength:0]];
Run Code Online (Sandbox Code Playgroud)
ser*_*gio 12
据我所知,这base64EncodingWithLineLength是一种未定义的方法,NSData但在一个名为的类别中NSData+Base64.h.您收到错误的原因是您没有将该类别添加到项目中,因此调用该方法,找不到该方法.
所以你应该在你的项目中添加"NSData + Base64.*"文件.从这里获取它们.
编辑:
由于OP提到该类别包含在静态库中并且假设静态库已正确链接,因此对此问题的可能修复是添加
-ObjC
Run Code Online (Sandbox Code Playgroud)
标记到构建设置中的"其他链接器标志".此标志将强制加载Objective C类别中的所有符号,从而阻止它们通过链接器进行优化.
| 归档时间: |
|
| 查看次数: |
7961 次 |
| 最近记录: |