injection for XCode 的局限性

痛定思痛。 2022-09-25 04:25 211阅读 0赞

injection作为Xcode的插件,还是有局限性的。
injection的作用域主要集中在静态变量、静态或全局函数及其Swift的当量(按:Swift equivalents)。
以下是作者贴的示例代码:

e1a23ac4-5266-367e-a2e5-772f08b70be8.png

* 一个潜在的问题是,当类的新版本被加载,它带有自己的静态变量版本如sharedInstance和once标记。发生injected后,将产生一个新的单一实例。
To prevent this, class methods with the prefix “shared” are not swizzled on injection to support this common idiom.
以上这句我捉摸了很久还是没有吃透。
* 它可以浏览所有正在运行的应用程序的内存。为了确定类和实例调用injectied的回调,injection执行一次“扫描”,找到在内存中的所有对象。粗略地说,这涉及到在看一个对象,然后通过递归寻找它所指向的对象。例如,对象的实例变量和内容(properties)。
This process is seeded using the application’s delegate and all windows.(按:这个过程通过应用程序的代理和所有的窗口)。一旦所有在内存中的引用被收集,injection将会过滤这些它已经编译和injected的引用,。然后再将被引用信息的回调部分发送出去。
如果没有找到引用注入的内容,Injection将通过sharedInstance查找所有被涉及到的对象。如果没有找到任何对象,那么,Injection将找不到你的实例。这会导致你无法在你的app中进行回调函数的调用。
* 函数dispatch_on_main无法被injected,因为它已被静态地链接到应用程序。然但是,injection可以通过代码示例里的doSomething方法进行inject。dispatch_on_main将会被链接到本地的在被injected对象文件的一个新版本中。

以上内容参考:https://github.com/johnno1962/injectionforxcode

  • 点击查看原始大小图片
  • 大小: 63.2 KB

  • 查看图片附件

发表评论

表情:
评论列表 (有 0 条评论,211人围观)

还没有评论,来说两句吧...

相关阅读

    相关 人工智能局限性

    人工智能的局限性 有人听说我想创业,给我提出了一些“忽悠”的办法。他们说,既然你是程序语言专家,而现在人工智能(AI)又非常热,那你其实可以搞一个“自动编程系统”,号称可