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
分享到:
相关推荐
Command Line Tools for Xcode 是苹果为开发者提供的一个关键组件,主要针对macOS操作系统,用于在命令行环境下进行软件开发。这个资源下载包含了Xcode 13.3版本的命令行工具,是那些不需完整Xcode IDE,但需要构建...
xocde
Command_Line_Tools_for_Xcode_12.5.1
Command_Line_Tools_for_Xcode_15.3.dmg
Additional_Tools_for_Xcode_12,适用于安装macOS Xcode附加应用
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 苹果开发者工具下载: ...
《XcodeColors for xcode4 on Macos X 10.7.2——色彩编码的编程体验提升》 在编程世界中,Xcode是Apple开发者首选的集成开发环境(IDE),用于创建iOS、macOS以及其他Apple平台的应用。而XcodeColors则是一个专为...
Hardware_IO_Tools_for_Xcode_7.3.dmg
作者johnno1962,代码...介绍:Injection for Xcode 是一个Xcode插件(可以通过Alcatraz获得),它可以向正在运行的app动态插入一段新的Swift/Objective-C代码,从而加速创建进程。它不会对你的项目做任何的改变。
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
《Apple Additional Tools for Xcode 11.4:开发者必备的辅助工具》 Apple Additional Tools for Xcode 11.4 是苹果公司为Xcode开发环境提供的一套重要的辅助工具集合,它对于iOS、macOS以及其他Apple平台的软件...
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
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 ...
"空模板forXcode"是一个专为iOS开发者设计的项目模板,旨在简化新项目的初始化过程。这个模板仅包含AppDelegate类,是开发者的起点,帮助他们快速启动一个基本的应用框架。 首先,我们来详细了解AppDelegate类。...
Command_Line_Tools_for_Xcode_12.3_beta-2
Command_Line_Tools_for_Xcode_11.5 需要配合xcode11.5使用
标题中的“XVim for xcode5.1”表明这是针对Xcode 5.1版本的一个定制版或优化版XVim插件。在Xcode 5.1这个特定的版本中,可能存在与XVim兼容性的问题,导致某些功能无法正常工作或者用户体验下降。因此,这个压缩包...
5. 兼容性:此插件兼容Xcode 8.x和7.x版本,确保了较旧版本的Xcode用户也能享受书签功能。 开源项目的意义在于,它鼓励社区参与和改进。"Bookmark Plugin for Xcode.zip" 作为一个开源项目,其源代码可在GitHub等...