1

NSObjectの上にカテゴリを作成しました。これは、すべてのクラスに、次の2つのクラスメソッドを継承させたいためです。

@interface NSObject (MyCategory)

+ (MyEnum) getXYZ;
+ (void) setXYZ:(MyEnum)myEnum;

@end

次に、このカテゴリをPCHファイルにインポートしました。

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    #import "NSObject+MyCategory.h"
#endif

次に、クラスの1つでメソッドを使用しました。

[[self class]getXYZ];

実行時にこのエラーが発生しました:

+[MyClass getXYZ]: unrecognized selector sent to class 0xd04f4
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '+[MyClass getXYZ]: unrecognized selector sent to class 0xd04f4'

私は何か間違ったことをしましたか?カテゴリはよく書かれていますか?クラスメソッドは継承されませんか?[セルフクラス]の代わりに[スーパークラス]を使用する必要がありますか?PCHファイルは私のカテゴリをインポートする場所ですか?

ありがとう、Nur

4

3 に答える 3

0

カテゴリ(NSOBject)の実装ファイル(.m)でgetXYZメソッドを定義しておらず、NSObjectのクラスメソッドを呼び出すために...use

[NSObject getXYZ];

いいえ

 [[self class]getXYZ];
于 2012-09-27T14:37:06.290 に答える
0

カテゴリがメイン プロジェクトとは別のプロジェクトにある場合は、リンカー フラグ「-all_load」を追加する必要があります。

于 2012-09-27T15:14:15.673 に答える
0

プレフィックス ヘッダー (.pch) ファイルにカテゴリをインポートしないでください。ほとんどの場合、他のいくつかのファイルでカテゴリを必要とするだけなので、そこにインポートするだけです。プロジェクト全体で使用されるプレフィックス ヘッダーのファイルのみをインポートします。

そのカテゴリをプレフィックス ヘッダーに含めたい場合は、[ビルド設定]Precompile Prefix Headerを に設定してみてくださいNo。または、プロジェクトをクリーンアップします。Xcode がプレフィックス ヘッダーの再コンパイルを忘れることがあります。

ここに画像の説明を入力

于 2012-09-27T15:17:44.170 に答える