0

我正在尝试从另一个源文件中的另一个类调用一个方法。

例子:

  1. 我有一个名为的文件Source1.h/Source1.m(两者都是目标 C 类文件)
  2. 我有另一个文件名Source2.h/Source2.m(都是客观的 C 类文件)
  3. Source1包含 2 种方法,例如:method1method2
  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 回答