Screenshots

Description

InjectionIII adds a limited form of “Hot Reload” capability to your iOS, tvOS and macOS projects written in Swift or Objective-C. This allows you to change the implementations of methods in classes without having to restart your app.

To get started, install the app to /Applications and run it then, download the example project http://johnholdsworth.com/GettingStarted.zip and build and run it in Xcode. You’ll be promoted to select the directory containing the project file and sources by the menubar app to give it access to which files have changed. Once injection has connected, if you save a file, it will be recompiled and injected into the running app, the new implementations taking place of the old. In the GettingStarted iOS app, if you edit the file DetailViewController.swift to change the string appended after the detail.description in function configureView() then save the file, you can see it take effect straight away.

InjectionIII requires Xcode version 9.3/4 or 10 to work, installed at the standard location in /Applications. You'll need to turn entitlements off to be able to use injection on a macOS application. Add one of the following to your app’s startup to connect to InjectionIII:

#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
#endif

Or, to use with Xcode 10:

#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection10.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection10.bundle")?.load()
#endif

It’s limited in that it can only reload implementations of non-final, non-generic classes and not structs but in general it works quite well once you’re up an running.

What's New

Version 1.2

Support for Xcode 10 - You may have to update path to the injection bundle - see description

To use with Xcode 10:

#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection10.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection10.bundle")?.load()
#endif

Ratings and Reviews

5.0 out of 5
5 Ratings
5 Ratings
cissu

thanks for your work

five stars and thansk for your work!

SaoudRizwan

Really cool step forward for building and testing apps

Making minor UI changes over and over can become time consuming while you wait for Xcode to build and compile your project each time you want to see your changes. This is a really cool tool, although I wish Apple would inetegrate something like this natively into Xcode, so we could use it without having to 'inject ontop' of the running code.

Information

Seller
Christoffer Winterkvist
Size
6.9 MB
Category
Developer Tools
Compatibility
macOS 10.12 or later, 64-bit processor
Languages
English
Age Rating
Rated 4+
Copyright
© 2018 John Holdsworth
Price
Free

Supports

  • Family Sharing

    With Family Sharing set up, up to six family members can use this app.