在运行时将动态消息发送到iOS上Objective-c中的对象

Ali*_*Ali 3 message action objective-c ios

是否可以在运行时制作消息并将其发送到iOS上的objective-c中的对象?
假设我有一个类的实例, Foo 我希望能够使用类似的东西

NSString * d = @"action1:";
[myFoo d]; 
d = @"action2:";
[myFoo d];
Run Code Online (Sandbox Code Playgroud)

Foo至少有两种即时方法:

-(void) action1:(id)sender;
-(void) action2:(id)sender;
Run Code Online (Sandbox Code Playgroud)

typ*_*ror 10

NSString *d = @"action1:";
SEL selector = NSSelectorFromString(d);
if ([myFoo respondsToSelector:selector])
{
    [myFoo performSelector:selector withObject:someObject];
}
Run Code Online (Sandbox Code Playgroud)

有许多不同的performSelector方法NSObject.你可以打电话没有参数,有延误等.

  • 对于更复杂的方法,请使用`objc_msgSend(myFoo,selector,args)`.根据参数的类型和方法的返回类型,您应该在调用它之前将`&objc_msgSend`强制转换为适当的函数指针类型. (3认同)