这是一个超级基本的问题。我想在我的应用程序中使用Matt Gemmell的MGImageUtilities类。我已将类UIImage+ProportionalFill.h
和UIImage+ProportionalFill.m
添加到我的项目中。他们定义方法imageScaledToFitSize
。但是当我尝试运行应用程序时,出现unrecognized selector sent to instance
错误。显然,我必须使该方法可用于我希望它运行的类,但我不知道该怎么做。我在视图控制器的.h和.m文件中都有#import UIImage+ProportionalFill.h
,在.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
的唯一地方。
答案 0 :(得分:2)
如果您已包含.m文件,则不应出现unrecognized selector sent to instance
错误。所以,我怀疑.m文件没有正确地添加到你的目标,或者你在调用方法时拼错了一些东西,或者把它发送到了错误的对象(不是UIImage
的实例)。
如果您提供有关调用方法的方式的更多信息(即,在哪个对象上)以及确切的控制台日志输出,我可能能够进一步帮助您。
要检查.m
文件是否实际分配给目标,请转到Xcode中的项目信息窗格并显示目标的构建阶段窗格;在那里你可以找到构建它时包含的所有模块的列表。
作为一般性说明:
包含您的类别的.h
文件将阻止编译器发出有关未定义方法的警告;如果实现可用,不包括.h
文件将不会阻止实际调用该方法;
如果您不包含.m
文件,则会获得unrecognized selector sent to instance
的例外情况。
答案 1 :(得分:1)
该类别提供了该方法的实现。我认为可能会发生的是你将类别添加到错误的类中。这就像在MyClass
中添加一个类别,类别调用类似:
[self count]; // Method from an NSArray