我正在使用Objective-C运行时库函数class_copyMethodList()来获取我班级中所有方法的列表。如何将那些类型的Method对象转换为可用的SEL对象?
答案 0 :(得分:5)
在返回的Method对象上运行函数method_getName()
。
答案 1 :(得分:3)
我这样做了几年,以提取一个类的方法的所有名称。您可以使用NSSelectorFromString()从每个名称中获取SEL。
+ (NSArray *) methodNamesForClass:(Class) aClass
{
Method *methods;
unsigned int methodCount;
if (methods = class_copyMethodList(aClass, &methodCount))
{
NSMutableArray *results = [NSMutableArray arrayWithCapacity:methodCount];
while (methodCount--)
[results addObject:[NSString stringWithCString: sel_getName(method_getName(methods[methodCount]))
encoding: NSASCIIStringEncoding]];
free(methods);
return results;
}
return nil;
}
答案 2 :(得分:-2)
假设您拥有方法的名称,可以使用NSSelectorFromString
函数将其转换为选择器。
SEL fooSelector = NSSelectorFromString ( @"foo:" ) ;
Apple在他们的Objective C tutorial中讨论了这个问题。