Injection III, the App  

The latest version of the Injection App for "Hot Reloading" code into your iOS, tvOS or macOS app is currently available in the "Mac App Store":;=12

A simple overview of how to use this version in the description starting with the example project and you can see this in action here:

The new version uses a file watcher so you need only save the file to have it recompile an be injected into your app. The same limitations apply as before: be careful with singletons which will be reinitialised if they are a static variable in the source being injected and don't inject changes to the memory layout of structs or classes.

The Injection plugin for Xcode is now a standalone app. This allows you to inject changes to any method implementations into a running application in the simulator or a macOS app. Injecting is now as simple as downloading the app and having it running in the background while you are working on a project in Xcode and saving the file.

The app includes the "Xprobe" viewer for browsing an application's memory. It's loaded into an app using the "Load Xprobe" menu bar item. Initially, Xprobe displays a "sweep" of objects found by recursively following ivars pointing to other objects from a set of seeds. Clicking on an instance link displays the ivars of that object at that point in time. A snapshot can also be taken to freeze the state of the entire application and store it as a standalone web page for later analysis such as this file from Artsy's eidolon.

For OSX you'll need to patch the project's main.m (create an empty one for Swift projects) using "macOS Project/Patch" on the menu bar, after which, it should connect as before. If you patch your project or once you have performed an initial injection you can use a file watcher which injects each time a file in your project is saved. Unfortunately, injecting on the device is no longer possible due to iOS 10's sandboxing.

For more info consult the original documentation. If you'd like to feedback any bug reports or feature requests use or you can file a report on the issue tracking repo.