您可以使用该SEL
类型来保存选择器。简单地:
SEL dispatchTable[3] = { @selector(doThis:),
@selector(doThat:),
@selector(doTheOther:)
};
对于您的编辑,请使用NSArray
/ NSDictionary
/etc 的选择器作为您的属性。不允许在 Objective C 中使用 C 数组作为属性;它们不是受支持的类型之一(它们是 ObjC 对象、CF 类型和基本 C 'Plain Old Data' 类型。)
好的,在我们下面的评论中,您需要将选择器包装在 anNSValue
中以允许您在 objc 容器中使用它(因为SEL
是 C 指针类型):
NSMutableArray * dispatchTable2 = [[NSMutableArray alloc] initWithCapacity:3];
SEL selIn = @selector(doThis:);
// Wrap the selector in an NSValue instance
[dispatchTable2 addObject:[NSValue valueWithPointer:selIn]];
// On extracting:
NSValue * valOut = [dispatchTable2 objectAtIndex:0];
SEL selOut = [[dispatchTable2 objectAtIndex:0] pointerValue];
[anObject performSelector:selOut];
因此,现在您的表是存储为属性或 ivar 的 objc 容器,NSValue
您可以使用.SEL
valueWithPointer:
SEL
pointerValue