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

发布于 2024-12-04 14:56:25 字数 313 浏览 1 评论 0原文

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

NSString * d = @"action1:";
[myFoo d]; 
d = @"action2:";
[myFoo d];

,并且 Foo 至少有两个即时方法:

-(void) action1:(id)sender;
-(void) action2:(id)sender;

Is it possible to craft a message at runtime and send it to an object in objective-c on iOS?
Let's say I have an instance of class
Foo
I want to be able to use something like

NSString * d = @"action1:";
[myFoo d]; 
d = @"action2:";
[myFoo d];

and Foo has at least two instant methods:

-(void) action1:(id)sender;
-(void) action2:(id)sender;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦开始←不甜 2024-12-11 14:56:25
NSString *d = @"action1:";
SEL selector = NSSelectorFromString(d);
if ([myFoo respondsToSelector:selector])
{
    [myFoo performSelector:selector withObject:someObject];
}

NSObject 上有许多不同的 performSelector 方法。您可以不带参数、延迟等进行调用。

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

There are a number of different performSelector methods on NSObject. You can call with no params, with delays, etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文