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
分享到:
相关推荐
xocde
Command_Line_Tools_for_Xcode_13.3 资源下载
Additional_Tools_for_Xcode_11.4,适用于安装macOS Xcode附加应用
原下载地址: https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_macOS_10.13_for_Xcode_9.4.1/Command_Line_Tools_macOS_10.13_for_Xcode_9.4.1.dmg 苹果开发者工具下载: ...
Hardware_IO_Tools_for_Xcode_7.3.dmg
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
Additional_Tools_for_Xcode_12,适用于安装macOS Xcode附加应用
作者johnno1962,代码...介绍:Injection for Xcode 是一个Xcode插件(可以通过Alcatraz获得),它可以向正在运行的app动态插入一段新的Swift/Objective-C代码,从而加速创建进程。它不会对你的项目做任何的改变。
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
Command_Line_Tools_for_Xcode_12.3_beta-2
Command_Line_Tools_for_Xcode_11.5 需要配合xcode11.5使用
Apple_Additional_Tools_for_Xcode_11.4.dmg
NULL 博文链接:https://hulefei29.iteye.com/blog/1325322
Practical Autolayout guides, tips and tricks for xcode 7 for all devices
This package includes audio, graphics, hardware I/O, and other auxiliary tools. These tools include AU Lab, OpenGL Driver Monitor, OpenGL Profiler, Pixie, Quartz Debug, CarPlay Simulator, HomeKit ...
Command_Line_Tools_macOS_10.14_for_Xcode_10.1.dmg Mac-command-line-tools命令工具
Mac 开发工具 Command Line Tools for Xcode 13.4
Bookmark Plugin for Xcode.zip,Xcode 8.x和7.x的书签插件
command_line_tools_os_x_for_xcode.dmg
InjectionIII:运行时动态注入代码到项目里,injectionforxcode 的 Swift 版本.zip,Re-write of Injection for Xcode in (mostly) Swift4