injection for XCode 的局限性

本文探讨了injection for Xcode插件的功能与局限性,重点介绍了其作用于静态变量、函数及Swift等价物的方式。文章还深入解析了injection如何遍历应用内存、确定对象引用以及处理常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



* 一个潜在的问题是,当类的新版本被加载,它带有自己的静态变量版本如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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值