我正在尝试从另一个类中调用另一个源文件中的方法。
示例:
Source1.h/Source1.m
的文件(两者都是客观的C类文件)Source2.h/Source2.m
(两者都是客观的C类文件)Source1
包含两种方法,例如:method1
和method2
。Source2
文件中,我需要从method1
文件中调用source1
。我知道如何在目标C中执行此操作。但在我的source2
文件中,Source1
中的方法名称将被动态检索。我不打算用类似的东西对它进行硬编码。
Source1 *a = [[Source1 alloc]init];
[a method1];
method1
文本将从文本文件中获取。我可以使用Selector从同一个类调用一个方法。但我不能使用selector从另一个类调用方法。
请帮助解决这个问题....
非常感谢......
答案 0 :(得分:0)
这个答案似乎是相关的:How can I dynamically create a selector at runtime with Objective-C?
基本上你可以使用NSSelectorFromString从NSString中的UTF8字符串中创建一个选择器。
答案 1 :(得分: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);