在Swift扩展中,获取实际的调用对象?

胖子

假设我们处于SomeClass的实例中,请考虑以下简单调用

NSNotificationCenter.defaultCenter().addObserver(
 self,
 selector: #selector(SomeClass.fixer(_:)),
 name:"FixerNote",
 object:nil)

假设我们决定对扩展名进行保存以保存输入内容,结果将如下所示:

"FixerNote".does( #selector(SomeClass.fixer(_:)) )

这是扩展名...

public extension String
    {
    func does(s:Selector)
        {
        NSNotificationCenter.defaultCenter().addObserver
           .. here, you need the actual SomeClass that called us .. ,
            selector: s,
            name:self,
            object:nil)
        }
}

如何知道哪个对象称为扩展名?

(注意,我知道您可以将其传递或用作基础:))

你可以在Swift中做这样的事情吗?你能找到谁打给你的吗?

一个类似的问题:在示例中,您能找出选择器(示例中的“ s”)属于哪个对象吗?

ne

通常可以迭代程序的堆栈跟踪,但是您需要调试符号来确定self方法参数的位置,并且在优化的构建中甚至可能不再存在该参数,或者调用程序可能已被内联,或者优化器一时兴起,却遭受了其他破坏性的命运。因此,虽然可以大致了解调用您的方法,但无法self在已部署的,无符号的,优化的构建上获取调用方参数。

不,也不可能从选择器中获取类。选择器实际上只是一个标识方法名称的字符串,例如“ fixer:”。#selector()语法仅确保编译器为方法生成正确的选择器名称(考虑最终的@objc注释),并帮助重构工具了解正在发生的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift 协议扩展默认实现与类中的实际实现

来自分类Dev

Swift,如何调用GameScene扩展中的函数?

来自分类Dev

如何在ajax调用中返回对象而不是实际值?

来自分类Dev

如何在php中获取扩展对象?

来自分类Dev

如何在 vscode 扩展中获取对象?

来自分类Dev

在UWP中的Drop事件上获取实际放置的UIElement对象

来自分类Dev

在静态方法中获取实际通用类型的类对象

来自分类Dev

在静态方法中获取实际通用类型的类对象

来自分类Dev

如何获取javascript日期对象中给出的实际时间格式

来自分类Dev

从异步调用中仅获取对象

来自分类Dev

从异步调用中仅获取对象

来自分类Dev

获取在 Python 中调用方法的对象

来自分类Dev

如何从 logging.Handler 获取传递给日志记录调用的实际对象

来自分类Dev

如何在Swift中从扩展名中调用函数

来自分类Dev

Java-通过对象数组调用扩展类中的函数

来自分类Dev

从注入的脚本中获取Chrome扩展程序调用函数

来自分类Dev

Swift扩展,调用中缺少参数#1的参数

来自分类Dev

在JavaScript中获取对象字段并调用对象函数

来自分类Dev

如何从Swift中的indexPath获取UITableViewCell对象?

来自分类Dev

从获取请求 Swift 中检索对象

来自分类Dev

如何在VSPackage MSVS扩展中获取对Package对象的引用?

来自分类Dev

比较数组扩展中的对象会导致Swift出错

来自分类Dev

向Swift中的所有对象添加扩展/方法

来自分类Dev

Typescript:确保对象文字扩展接口,但返回实际对象类型

来自分类Dev

从函数中,如何获取有关实际调用此函数的模块的详细信息?

来自分类Dev

获取调用函数的对象

来自分类Dev

获取块的调用对象

来自分类Dev

如何在R中的调用函数环境中获取对象?

来自分类Dev

ListView:从ListViewItem获取实际的项目对象

Related 相关文章

  1. 1

    Swift 协议扩展默认实现与类中的实际实现

  2. 2

    Swift,如何调用GameScene扩展中的函数?

  3. 3

    如何在ajax调用中返回对象而不是实际值?

  4. 4

    如何在php中获取扩展对象?

  5. 5

    如何在 vscode 扩展中获取对象?

  6. 6

    在UWP中的Drop事件上获取实际放置的UIElement对象

  7. 7

    在静态方法中获取实际通用类型的类对象

  8. 8

    在静态方法中获取实际通用类型的类对象

  9. 9

    如何获取javascript日期对象中给出的实际时间格式

  10. 10

    从异步调用中仅获取对象

  11. 11

    从异步调用中仅获取对象

  12. 12

    获取在 Python 中调用方法的对象

  13. 13

    如何从 logging.Handler 获取传递给日志记录调用的实际对象

  14. 14

    如何在Swift中从扩展名中调用函数

  15. 15

    Java-通过对象数组调用扩展类中的函数

  16. 16

    从注入的脚本中获取Chrome扩展程序调用函数

  17. 17

    Swift扩展,调用中缺少参数#1的参数

  18. 18

    在JavaScript中获取对象字段并调用对象函数

  19. 19

    如何从Swift中的indexPath获取UITableViewCell对象?

  20. 20

    从获取请求 Swift 中检索对象

  21. 21

    如何在VSPackage MSVS扩展中获取对Package对象的引用?

  22. 22

    比较数组扩展中的对象会导致Swift出错

  23. 23

    向Swift中的所有对象添加扩展/方法

  24. 24

    Typescript:确保对象文字扩展接口,但返回实际对象类型

  25. 25

    从函数中,如何获取有关实际调用此函数的模块的详细信息?

  26. 26

    获取调用函数的对象

  27. 27

    获取块的调用对象

  28. 28

    如何在R中的调用函数环境中获取对象?

  29. 29

    ListView:从ListViewItem获取实际的项目对象

热门标签

归档