我是新来的目标C和麻烦理解为什么我得到这个错误。我查了其他类似的问题,但一直没能解决问题。'无法识别的选择器发送到实例'?
的错误是“ - [NSConcreteMutableData base64Decoded]:无法识别的选择发送到实例0x6e15610”
这里的问题是代码,其中调用base64Decoded导致崩溃的一个片段。
#import "DDData.h"
- (NSString *)decodeBase64:(NSString *)input
{
NSData* dataDecoded = [[input dataUsingEncoding:NSUTF8StringEncoding] base64Decoded];
return [NSString stringWithUTF8String:[dataDecoded bytes]];
}
而且在DDData.h:
#import <Foundation/Foundation.h>
@interface NSData (DDData)
- (NSData *)base64Decoded;
@end
和DDData.m:
@implementation NSData (DDData)
- (NSData *)base64Decoded
{
// Excluding function code, as it never gets to here
}
@end
只是说明该项目已启用ARC。任何想法可能是这里的问题?谢谢。
编辑:我已经调整了上面的代码,以帮助调试错误:
NSData* dataDecoded = [input dataUsingEncoding:NSUTF8StringEncoding];
[dataDecoded base64Decoded];
dataDecoded从dataUsingEncoding得到的值,是由以base64Decoded通话时,它不是零。当我继续调用base64Decoded时,它崩溃了。
[输入数据使用编码:NSUTF8StringEncoding]变成零,因为输入也可能为零。所以函数对nil日志执行错误 –
类“NSConcreteMutableData”的头文件'.h'文件说什么?它有像'-base64Decoded'这样的选择器吗?因为它似乎给你带来了例外。 – holex
@Pince我现在编辑我的帖子来澄清。发送到base64Decoded的数据不是零。 – Benzino