0

我对下一个代码有疑问:

NSDictionary * imagen = [[NSDictionary alloc] initWithDictionary:[envio resultValue]];
NSString *imagenS = [imagen valueForKey:@"/Result"];

ClaseMaestra *b1 = [[ClaseMaestra alloc]init];
NSData *imagenDecode = [[NSData alloc] initWithData:[b1 base64DataFromString:imagenS]];

NSLog(@"Decode Image:");
NSLog(@"%@", imagenDecode);

//SAVE IMAGE

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  

NSString *docDirectory = [sysPaths objectAtIndex:0]; 

NSString *filePath = [NSString stringWithFormat:@"%@david.png",docDirectory]; 

[imagenDecode writeToFile:filePath atomically:YES]; 

块引用

[envio resultValue] --> 以 Base 64 编码返回一个带有一个图像的 NSDictionary。

我想要解码器并保存此图像,但在我的控制台中我显示了此消息:

2011-08-23 19:19:39.750 WSStub[38501:a0f] *************************
2011-08-23 19:19:39.752 WSStub[38501:a0f] SendImage
2011-08-23 19:19:39.752 WSStub[38501:a0f] *************************
2011-08-23 19:19:39.759 WSStub[38501:a0f] -[ClaseMaestra base64DataFromString:]: unrecognized selector sent to instance 0xd00ad0
Program received signal:  “EXC_BAD_ACCESS”.

ClaseMaestra 接口是:

#import <Foundation/Foundation.h>

@class NSString;

@interface ClaseMaestra : NSObject 

+ (NSMutableData *)base64DataFromString: (NSString *)string;

@end

我无法理解“无法识别的选择器”错误...

4

4 回答 4

2

这是一个类方法,您可以在该类的实例上调用它。您应该将其更改为实例方法。代替:

+ (NSMutableData *)base64DataFromString: (NSString *)string;

采用:

- (NSMutableData *)base64DataFromString: (NSString *)string;

或者,更改呼叫,而不是:

NSData *imagenDecode = [[NSData alloc] initWithData:[b1 base64DataFromString:imagenS]];

采用:

NSData *imagenDecode = [[NSData alloc] initWithData:[ClaseMaestra base64DataFromString:imagenS]];

选择什么取决于您的需求。

于 2011-08-23T17:41:36.883 回答
2

base64DataFromString:是一个类方法(以 a 开头+)。所以而不是

ClaseMaestra *b1 = [[ClaseMaestra alloc]init];
NSData *imagenDecode = [[NSData alloc] initWithData:[b1 base64DataFromString:imagenS]];

你应该做

NSData *data = [ClaseMaestra base64DataFromString:imagenS];
于 2011-08-23T17:41:40.217 回答
0

您正在向实例发送类消息。接收者应该是一个类。

这样做:

NSData *imagenDecode = [[NSData alloc] initWithData:[ClaseMaestra base64DataFromString:imagenS]];
于 2011-08-23T17:47:31.353 回答
0

如果您使用私有框架的名称,您也会收到此错误,例如: MPMovieView 。每个人都知道您不应该使用这些,但我不知道我正在使用一个!

奇怪的是,如果您使用 Xibs,它们会加载系统并给您相同类型的错误(类方法)。

但是,如果您在代码中加载它,它会影响系统框架之一。我花了相当多的时间来摸头,确保一切都正确连接......它只是需要改变我如何命名我的自定义东西。发给有类似情况的人

于 2012-03-14T21:36:08.270 回答