代码之家  ›  专栏  ›  技术社区  ›  Tirth

iPhone:“‘class_name’可能不会响应methd_name”和“unrecognized selector”错误。

  •  0
  • Tirth  · 技术社区  · 15 年前

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

    类“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];
    
    
    }
    

    警告:Calculatergb控制器可能不会响应btncalrgb按钮功能中的Calculatergb。

    编辑01:

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

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

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

    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[UIImage skinImage]: unrecognized selector sent to
    
    2 回复  |  直到 11 年前
        1
  •  1
  •   EEE    15 年前

    你把方法叫错了。你必须这样称呼它;

    [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;
    
        2
  •  0
  •   bddckr    15 年前

    首先,要消除错误:

    +(void)calculateRGB:(UIImage *)skinImage
    

    应该是

    - (void)calculateRGB:(UIImage *)skinImage
    

    这个 + 是为了 方法,你要打开它 实例 (这是我们,你需要使用 - )因此,错误是因为您试图调用实例方法,但没有名为的实例方法 calculateRGB: .

    方法需要 UIImage 做这件事是在计算。这意味着你应该称之为(就像eee告诉你的那样):

    [self calculateRGB:anImage];
    

    anImage 会是一个 ui图像 您提供的实例。这可能是 skinImage 您已经在实现中使用了,如代码中所示。

    除此之外,我建议 使用 UIViewController 子类,用于计算图像的RGB值。您可能应该使用 ui图像 为了这个。

    推荐文章