0

別のソース ファイルにある別のクラスからメソッドを呼び出そうとしています。

例:

  1. という名前のファイルがありますSource1.h/Source1.m(どちらも目的のCクラスファイルです)
  2. 別のファイル名がありますSource2.h/Source2.m(どちらも目的の C クラス ファイルです)
  3. Source1method1と の2 つのメソッドが含まれていますmethod2
  4. ファイルから、ファイルからSource2呼び出す必要があります。method1source1

私は客観的なCでそれを行う方法を知っています.しかし、私のsource2ファイルでは、メソッド名はSource1動的に取得されます. これに似たものをハードコーディングするつもりはありません。

Source1 *a = [[Source1 alloc]init];

[a method1];

method1テキストはテキスト ファイルから取得されます。Selector を使用して、同じクラスからメソッドを呼び出すことができます。しかし、セレクターを使用して別のクラスからメソッドを呼び出すことはできません。

この問題を解決するのを手伝ってください....

どうもありがとう......

4

2 に答える 2

0

この答えは関連しているようです:Objective-Cを使用して実行時にセレクターを動的に作成するにはどうすればよいですか?

基本的に、NSSelectorFromStringを使用して、NSString内のUTF8文字列からセレクターを作成できます。

于 2012-12-18T07:29:59.163 に答える
0

あなたはこのようにすることができます:

MyClass には、myMethod他のクラスから呼び出されるメソッドが含まれています。

MyClass *object=[MyClass new];

SEL mySelector=NSSelectorFromString(@"myMethod"); //myMethod is a string, that you can read from any text file/source file and use it here.

//以下はARCで警告を作成します。これらを追加することで警告を抑制することができます

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
    [object performSelector:mySelector];
#pragma clang diagnostic pop

他の方法は、これによって行うことです:

#import <objc/message.h>//This is required to import

次に、次のコードでメソッドを呼び出します。

MyClass *object=[MyClass new]; 
SEL mySelector=NSSelectorFromString(@"myMethod");
objc_msgSend(object,mySelector);
于 2012-12-18T09:25:21.157 に答える