0

これは超基本的な質問です。アプリで Matt Gemmell の MGImageUtilities のクラスを使用したいと考えています。クラスUIImage+ProportionalFill.hUIImage+ProportionalFill.mプロジェクトに追加しました。メソッドを定義しますimageScaledToFitSize。しかし、アプリを実行しようとすると、unrecognized selector sent to instanceエラーが発生します。明らかに、メソッドを実行したいクラスでメソッドを使用できるようにする必要がありますが、その方法がわかりません。#import UIImage+ProportionalFill.hView Controllerの.hファイルと.mファイルの両方、および追加した.hファイルにあります

@interface UIImage (ProportionalFill)

- (void)imageScaledToFitSize;

@end

しかし、私はまだエラーが発生しています。私ができていない非常に基本的なことがあると思いますが、それが何であるかはわかりません。

あなたの考え?

更新: 私のプロジェクトには次のクラスが UIImage+ProportionalFillあり, and 'ます.

- (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 に答える