0

这是一个超级基础的问题。我想在我的应用程序中使用来自 Matt Gemmell 的 MGImageUtilities 的类。我已将课程添加UIImage+ProportionalFill.hUIImage+ProportionalFill.m我的项目中。他们定义了方法imageScaledToFitSize。但是当我尝试运行该应用程序时,我得到一个unrecognized selector sent to instance错误。显然,我必须使该方法可用于我希望它在其中运行的类,但我不知道该怎么做。我#import UIImage+ProportionalFill.h在视图控制器的 .h 和 .m 文件中都有,在我添加的 .h 文件中

@interface UIImage (ProportionalFill)

- (void)imageScaledToFitSize;

@end

但我仍然收到错误消息。我认为我没有做一些非常基本的事情,但我不知道它是什么。

你的意见?

更新: 我的项目有以下类: UIImage+ProportionalFill'GHViewController , and 'GHAppDelegate .UIImage+ProportionalFill`包含以下声明(和相应的实现):

- (UIImage *)imageScaledToFitSize:(CGSize)size;

GHViewController.m,我有以下代码:

    UIImage *img = [self createImage];
    UIImage *pic;
    if (self.serviceType==SLServiceTypeFacebook)
    {
        CGSize size = CGSizeMake((404*320)/([[UIScreen mainScreen] bounds].size.height - 64), 404);
        pic = [img imageScaledToFitSize:size];
    }

那是我唯一打电话的地方imageScaledToFitSize

4

2 回答 2

2

如果您已包含 .m 文件,则不应unrecognized selector sent to instance出现错误。因此,我怀疑 .m 文件未正确添加到您的目标中,或者您在调用该方法时拼错了某些内容,或者将其发送到了错误的对象(不是 的实例UIImage)。

如果您提供有关调用方法的方式(即,在哪个对象上)和确切的控制台日志输出的更多信息,我可能会为您提供进一步的帮助。

要检查.m文件是否实际分配给您的目标,请转到 Xcode 中的项目信息窗格并显示目标的构建阶段窗格;在那里,您将找到构建它时包含的所有模块的列表。

作为一般说明:

  1. 包含.h您的类别的文件将防止编译器发出有关未定义方法的警告;如果实现可用,则不包括该.h文件不会阻止实际调用该方法;

  2. 如果您不包含该.m文件,您将获得带有unrecognized selector sent to instance.

于 2012-10-17T17:04:13.500 回答
1

类别提供方法的实现。我认为可能发生的是您将类别添加到错误的类中。这就像向您添加一个类别,MyClass并且该类别调用如下:

[self count]; // Method from an NSArray 
于 2012-10-17T17:04:34.807 回答