InjectionIII - Re-write of Injection for Xcode in (mostly) Swift4

  •        51

This start-over implementation on Injection for Xcode has been built into an app: included in the repo which runs in the status bar. Code injection allows you to update the implementation of methods of a class incrementally in the iOS simulator without having to rebuild or restart your application saving developer time. You can avoid the complications of code signing by using the pre-built binary which is available to download here. For some reason you may need to take the app out of qurantine manually or it will report it as damaged when you run it: xattr -d ~/Downloads/ To use, copy/link it to /Applications and run the app. Injection also expects to find your current Xcode at path /Appplications/ Injection no longer requires you to change your project as for iOS is always available if you use the "Start Injection" menu (or type control-=) each time you start your app. Once injection is connected, a file watcher is started in the InjectionIII app and whenever you save a Swift or Objective-C source the target app is messaged to update the implementation. The file watcher can be disabled & enabled while the app is running using the status bar menu. If you inject a subclass of XCTest it will try running that individual test inside your application. When you run your application without rebuilding (^⌘R), recent injections will be re-applied.



Related Projects

Swinject - Dependency injection framework for Swift with iOS/macOS/Linux

  •    Swift

Swinject is a lightweight dependency injection framework for Swift. Dependency injection (DI) is a software design pattern that implements Inversion of Control (IoC) for resolving dependencies. In the pattern, Swinject helps your app split into loosely-coupled components, which can be developed, tested and maintained more easily. Swinject is powered by the Swift generic type system and first class functions to define dependencies of your app simply and fluently.

Xtrace - Trace Objective-C method calls by class or instance

  •    Objective-C++

As an alternative to building Xtrace into your project, Xtrace is now included in the "code injection" plugin from Once you have injected, all xtrace methods are available for you to use in lldb. The example project, originally called "Xray" will show you how to use the Xtrace module to get up and running. Your milage will vary though the source should build and work for 32 bit configurations on an iOS device or 64 bit OS X applications or the simulator. The starting point is the XRAppDelegate.m class. The XRDetailViewController.m then switches to instance viewing of a specific UILabel when the detail view loads.

marzipanify - Convert an iOS Simulator app bundle to an iOSMac (Marzipan) one (Unsupported & undocumented, WIP)

  •    Objective-C

marzipanify is an unsupported commandline tool to take an existing iOS Simulator binary (with minimum deployment target of iOS 12.0) and statically convert it and its embedded libraries & frameworks to run on macOS 10.14's UIKit runtime (Marzipan). This isn't a tool to automatically port your iOS app to the Mac — moreso something to get you up and running quickly.

Ipad-Simulator - jQuery + css3 iOS simulator with some ipad design

  •    Javascript

jQuery + css3 iOS simulator with some ipad design

bfinject - Dylib injection for iOS 11.0 - 11.1.2 with LiberiOS and Electra jailbreaks

  •    Objective-C++

Easy dylib injection for jailbroken 64-bit iOS 11.0 - 11.1.2. Compatible with Electra and LiberiOS jailbreaks. bfinject loads arbitrary dylibs into running App Store apps. It has built-in support for decrypting App Store apps, and comes bundled with iSpy and Cycript.

iOS-Universal-Framework - An XCode project template to build universal frameworks (arm7, arm7s, and simulator) for iOS / iPhone

  •    Python

Please use Apple's framework target for all new projects, as it is less hacky and is supported by Apple themselves.An XCode project template to build universal (arm6, arm7, and simulator) frameworks for iOS.

iphonesim - Command Line Launcher for the iPhone Simulator

  •    Objective-C

WARNING: This project is no longer supported. Please check out for replacement that works with the latest XCode. The ios-sim tool is a command-line utility that launches an iOS application on the iOS Simulator. This allows for niceties such as automated testing without having to open XCode.

appium-xcuitest-driver - Appium iOS driver, backed by Apple XCUITest

  •    Javascript

Note: Issue tracking for this repo has been disabled. Please use the main Appium issue tracker instead. By default, this driver will create a new iOS simulator and run tests on it, deleting the simulator afterward.

Typhoon - Powerful dependency injection for iOS & OSX (Objective-C & Swift)

  •    Objective-C

Powerful dependency injection for Cocoa and CocoaTouch. Lightweight, yet full-featured and super-easy to use. Visit the Typhoon website for an introduction. There's also a nice intro over at Big Nerd Ranch, or here's an article, by John Reid. Quite a few books have been written on the topic, though we're not familiar with one that focuses specifically on Objective-C, Swift or Cocoa yet.

SimulatorRemoteNotifications - Library to send (fake) remote notifications to the iOS simulator

  •    Objective-C

Library to send (fake) remote notifications to the iOS simulator

SimulatorStatusMagic - Clean up your status bar for taking screenshots on the iOS simulator.

  •    Objective-C

Run the app again and click "Restore Default Status Bar". Resetting the iOS Simulator using the normal menu option also works. Yes! SimulatorStatusMagic is available via CocoaPods, Carthage and as a standalone source release. Installation instructions are available for each method.

SimulatorRemoteNotifications - Library to send mock remote notifications to the iOS simulator

  •    Objective-C

SimulatorRemoteNotifications is a library to send mock remote notifications to the iOS simulator. The library extends UIApplication by embedding a mini server that listen for UDP packets containing JSON-formated payload, and a service to send notifications to the mini server.

KFWatchKitAnimations - KFWatchKitAnimations creates beautiful 60 FPS animations for  Watch by recording animations from the iOS Simulator

  •    Swift

KFWatchKitAnimations provides an extremely easy-to-use tool for  Watch developers with which they can create gorgeous, smooth 60 FPS animations in a way that is highly optimized for WatchKit by recording arbitrary animations from the iOS Simulator. Click the image below to be taken to a short introduction video.

go-eval - the beginning of an interpreter for Go (fork off exp/eval)

  •    Go

This is the new home for the exp/eval package: the beginning of an interpreter for Go. The go-eval command is rather barebone. But there is igo which is built on top of the eval package and provides some additional refinements.

lein-fruit - A Leiningen plugin for building Clojure/iOS projects

  •    Clojure

A Leiningen plugin for building native iOS apps in Clojure and Java using the RoboVM bytecode-to-native translator. It is modeled after lein-droid and the commands are similar. The programming is done by using RoboVM's wrapper classes, as shown in the built-in template. Please note that REPL development and any use of eval is not supported.All files that originate from this project are dedicated to the public domain. I would love pull requests, and will assume that they are also dedicated to the public domain.

arcgis-runtime-samples-ios - Swift samples demonstrating various capabilities of ArcGIS Runtime SDK for iOS

  •    Swift

This repository contains Swift sample code demonstrating the capabilities of ArcGIS Runtime SDK for iOS. The project that can be opened in XCode and instantly run on a simulator or a device. The master branch of this repository contains samples configured for the latest available version of ArcGIS Runtime SDK for iOS. For samples configured for older versions of the SDK, look under the Releases tab for a specific version.

objection - A lightweight dependency injection framework for Objective-C

  •    Objective-C

Objection is a lightweight dependency injection framework for Objective-C for MacOS X and iOS. For those of you that have used Guice, Objection will feel familiar. Objection was built to stay out of your way and alleviate the need to maintain a large XML container or manually construct objects. A class can be registered with objection using the macros objection_register (optional) or objection_register_singleton. The objection_requires macro can be used to declare what dependencies objection should provide to all instances it creates of that class. objection_requires can be used safely with inheritance.

macSubstrate - Substrate for macOS

  •    Objective-C

macSubstrate is a platform tool for interprocess code injection on macOS, with the similar function to Cydia Substrate on iOS. Using macSubstrate, you can inject your plugins (.bundle or .framework) into a mac app (including sandboxed apps) to tweak it in the runtime. All you need is to get or create plugins for your target app.

dyci-main - Dynamic Code Injection Tool for Objective-C

  •    Objective-C

This tool allows you to inject code into running iOS application, without restarting it. Uninstall DyCI before updating Xcode. If you don't you may need to reinstall xcode. We're currenlty working on this issue... If you've already expirienced this issue - remove and reinstall Xcode.

quickstart-ios - Firebase Quickstart Samples for iOS

  •    Objective-C

A collection of quickstart samples demonstrating the Firebase APIs on iOS. Each sample contains targets for both Objective-C and Swift. For more information, see can open each of the following samples as an Xcode project, and run them on a mobile device or a simulator. Simply install the pods and open the .xcworkspace file to see the project in Xcode.