我是新來的目標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