直接从方法获取选择器? NSSelectorFromMethod([[SomeClass someObject] 方法])?

发布于 2024-08-01 22:03:59 字数 12 浏览 5 评论 0 原文

是否可以?

Is it possible?

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

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

发布评论

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

评论(3

隐诗 2024-08-08 22:03:59

或者,使用:

NSSelectorFromString(@"myMethodName");

Alternatively, use:

NSSelectorFromString(@"myMethodName");
感性 2024-08-08 22:03:59

您在标题中的示例不太清楚。

但我们开始了。 所有类的所有选择器都位于同一名称空间中。 这意味着 Bar 类上的 doFooBaz 类上的 doFoo 都将是相同的唯一选择器。 这意味着您无需为获取选择器而费心处理类。 两种不错的方法。

NSSelectorFromString(@"doFoo");  // If you have the selector name as a string.
@selector(foFoo);  // If it is selector constant inlined in your code.

您的问题还可能涉及如何从方法返回选择器。 由于选择器是 obj-c 中的一等公民,因此我们可以将它们作为任何变量传递,并从方法中返回它们。 选择器的类型是SEL

-(SEL)selectorFromFoo:(Foo*)aFoo;  // Declare a method returning a selector.

SEL sel = [myBar selectorFromFoo:myFoo];    // Get a selector.
[myBar proformSelector:sel withObject:nil]; // Perform this selector

Your example in the header is not quite clear.

But here we go. All selectors for all classes lives int he same namespace. Meaning doFoo on the class Bar, or doFoo on the class Baz will both be the same unique selector. This means you do not need to bother with the class in order to get a selector. Two nice ways to do it.

NSSelectorFromString(@"doFoo");  // If you have the selector name as a string.
@selector(foFoo);  // If it is selector constant inlined in your code.

Your question could also refer to how to return selectors from a method. Since selectors are first class citizens in obj-c, we can pass them around as any variables, and return them from methods. The type of a selector is SEL.

-(SEL)selectorFromFoo:(Foo*)aFoo;  // Declare a method returning a selector.

SEL sel = [myBar selectorFromFoo:myFoo];    // Get a selector.
[myBar proformSelector:sel withObject:nil]; // Perform this selector
审判长 2024-08-08 22:03:59

Objective-C 运行时有一个名为“method_getName" with 接受一个 Method 对象并返回一个 SEL。

The Objective-C runtime has a function called "method_getName" with takes a Method object and returns a SEL.

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