【问题标题】:iPhone: " 'class_name' may not respond to methd_name" and "Unrecognized selector" ErrorsiPhone:“‘class_name’可能无法响应 methd_name”和“无法识别的选择器”错误
【发布时间】:2023-03-29 14:39:01
【问题描述】:

我编写了一个应用程序,我想在其中将 .jpg 图像转换为 .bmp 格式,但它失败并出现错误:

class_name' 可能不会响应 方法名”。

我的代码如下:

#import "CalculateRGBViewController.h"

@implementation CalculateRGBViewController

@synthesize skinImage;
@synthesize lblRedColor,btn,img;
struct pixel {
    unsigned char r, g, b,a;
};


-(IBAction)btnClick:(id) sender{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:picker animated:YES];

}
-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    [picker dismissModalViewControllerAnimated:YES];
    skinImage.  image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

}

+(void)calculateRGB:(UIImage *)skinImage    {

    struct pixel *pixels = (struct pixel *) calloc(1, skinImage.size.width * skinImage.size.height * sizeof(struct pixel));
    if (pixels != nil)
    {
        // Create a new bitmap

        CGContextRef context = CGBitmapContextCreate(
                                                     (void*) pixels,
                                                     skinImage.size.width,
                                                     skinImage.size.height,
                                                     8,
                                                     skinImage.size.width * 4,
                                                     CGImageGetColorSpace(skinImage.CGImage),
                                                     kCGImageAlphaPremultipliedLast
                                                     );
    NSLog( @"Pixel data one red (%i)", context);        
}

}
-(IBAction)btnCalRGB:(id) sender
{
    [self calculateRGB];

}

The shown me following code. 
-(IBAction)btnCalRGB:(id) sender
{
    [self calculateRGB];


}

警告:CalculateRGBController 可能无法响应 btnCalRGB 按钮功能中的 calculateRGB。

编辑01:

我也在我的代码中实现了,但它再次显示相同的警告。

[self calculateRGB:anUIImage]; 
-(IBAction)btnCalRGB:(id) sender; 

但它再次显示相同的警告。当按下上面的按钮时,程序会抛出异常。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[UIImage skinImage]: unrecognized selector sent to

【问题讨论】:

  • 一些额外的细节会有所帮助。发布确切的异常描述(包括类和方法名称),在代码中写下有问题的行。修复您的帖子 - 代码看起来很糟糕(帖子中的每一行代码应以至少 4 个空格开头)。

标签: iphone cocoa-touch uiimage selector


【解决方案1】:

你调用了错误的方法。你必须这样称呼它;

[self calculateRGB:anUIImage];

您的方法将 UIImage 作为参数,因此您必须在调用该方法时发送它。您还应该添加

+(void)calculateRGB:(UIImage *)skinImage;

到您的 .h 文件

使用这个

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { 

而不是这个

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

你可以写

skinImage.image = image;

【讨论】:

  • 嗨 EEE,以下行我也在我的代码中实现,但它再次显示相同的警告。 [自计算RGB:anUIImage]; -(IBAction)btnCalRGB:(id) 上面按钮上的发送者程序抛出异常。由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** + [UIImage skinImage]:无法识别的选择器发送到............谢谢
  • 你调用这样的方法 [self calculateRGB:anUIImage] 还是这样的 [self calculateRGB:skinImage.image]?并在我的回答中查看更新。
  • EEE,我应该遵循哪些步骤才能从 iphone 相机捕获的图像中获取 RGB 像素数?
【解决方案2】:

首先,要摆脱错误:

+(void)calculateRGB:(UIImage *)skinImage

应该是

- (void)calculateRGB:(UIImage *)skinImage

+ 用于 class 方法,您将在 instances 上调用它(这是我们需要使用 -)。所以这个错误是因为你尝试调用实例方法但是没有名为calculateRGB:的实例方法。

该方法需要UIImage 来进行计算。这意味着你应该调用它(就像 EEE 已经告诉你的那样):

[self calculateRGB:anImage];

anImage 将是您提供的 UIImage 实例。这可能是您已经在实现中使用的skinImage,如您的代码所示。

除此之外,我建议不要使用UIViewController 子类来计算图像的RGB 值。您可能应该为此使用UIImage 类别。

【讨论】:

  • ChriB,我必须使用哪个类而不是 UIViewController。
  • ChriB,你有什么想法可以找出从 iPhone 相机捕获的图像中计数的 RGB(红、绿、蓝)像素的数量,或者我应该遵循哪些图像处理来获得这些像素?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
相关资源
最近更新 更多