3

この質問の前日譚はこちらです。

クラス(A)があり、クラスにはカテゴリがあります。カテゴリでは、メソッドを定義して実装しました。

今、私は(Bと仮定しましょう)クラスで[a someMethod]を呼び出そうとしています。私の B クラスはこのメソッドに到達できません。他のクラスからカテゴリ meths を呼び出すことはできませんか?

4

3 に答える 3

4

コードは示していませんが、カテゴリ メソッドを参照する .m ファイルでは、カテゴリ インターフェイスを定義するファイルのヘッダーをインポートする必要があります。

于 2012-08-27T18:10:12.743 に答える
1

.m ファイルでカテゴリを定義すると、その .m ファイルの外部からカテゴリのメソッドを呼び出すことができなくなります。

于 2012-08-27T18:13:08.520 に答える
0

残念ながら、問題について十分な情報を提供していただけませんでした。したがって、私たちにできることは、それをどのように行うべきかを説明し、問題が発生している理由を推測することだけです。

質問を投稿するときは、関連するすべての情報を投稿する必要があります。この場合、それが機能しないコードになります。

また、あなたの発言

私の B クラスはこのメソッドに到達できません。

ほとんど何も意味しません。コンパイラ エラー、実行時エラーが発生し、構文ウィンドウに表示されません。これは正確には何を意味するのでしょうか?

ここで、クラスにカテゴリを実装するときに、ヘッダー (.h) ファイルでカテゴリを宣言する必要があります...

@interface Foo (BarExtensions)
- (NSString*)bar;
@end

次に、実装 (.m) ファイルで、これらのメソッドの実装を提供します。

@implementation Foo (BarExtensions)
- (NSString*)bar {
    return @"FooBar";
}
@end

もちろん、適切な名前を付ける必要があります。

また、ターゲット用にビルドされるファイルのリストに .m ファイルが含まれていることを確認してください。

そうすれば、失敗することはほとんどありません。

于 2012-08-27T18:25:18.197 に答える