Alchemic - The most advanced iOS DI framework available

Overview

Alchemic Carthage compatible

By Derek Clarkson

Alchemic is a Dependency Injection (DI) framework for iOS. It's goal is to help you manage object creation, object properties and variables. And it should be as simple and easy to do this as possible.

Please take a look at the main documentation site for details on installing and configuring Alchemic.

Main features

  • Engineered in Objective-C, usable in Objective-C and Swift projects.
  • Definitions and injections are dynamically read from the runtime.
  • Self starting on a background thread.
  • Uses default initializers, custom initializers or factory methods to instantiate objects.
  • Supports singletons, factories (templates) or externally created objects.
  • Supports methods and initializer arguments from objects or constants.
  • Objects can be located using class, protocol or unique name searches.
  • Works with implementation variables and methods, minimising public declarations.
  • Automatic array boxing for injections.
  • Automatic handling of UIApplicationDelegate instances.
  • Support for NSUserDefaults and Apple's cloud based key-value stores.
  • and much, much more.

v2.2.9, v2.2.10, v2.2.11, v2.2.12

  • Fixed bugs in bundle scanning which caused test bundles to not be scanned.
  • Fixed a bug where aspects where being loaded on incorrect flags.
  • Condensed the 'LogModel' output in the logs. Output now looks like [*SRTNW~CM] or as 'Name' Where the flags *SRTNW~CM stand for instantiated, singleton, reference, template, nillable, weak, transient, class and method.
  • Fixing bug where the UIApplicationDelegate aspect would fail if there was no application delegate.

v2.2.8

  • Fixing bug where using in a framework with no app delegate was throwing an error.

v2.2.7

  • Fixing version numbers which were missing from the framework.

v2.2.5

  • Bug fix: Ensuring injection callback methods in the AlchemicAware protocol are always called on the main thread.

v2.2.4

  • Refactoring to improve some exception messages.

v2.2.3

  • Swift version of AcWhenReady now public.

v2.2.2

  • Removing requirement for Address Sanitizer from the built library.

v2.2.1

  • Fixed bug where tranient watches were triggering the re-injection non-transient injections.
  • Changed LogInitialModel to just logModel to dump the model into the logs on startup.

v2.2.0

  • Merged Swift support back into main Alchemic framework.
  • Fixed bug where it was possible to inject a nil from a nillable factory into a non-nullable variable or method argument.
  • Added support for value transformations when sending values to and from value stores.
  • Split value store loading into defaults and current values for better management of incoming data.
  • Added an abstract aspect parent class.
  • Fixed bug where app delegates with no injections were not being added to the model.
  • Cleaned up value handling code.
  • Fixed bug where frameworks were not being scanned correctly on devices which resulted in Alchemic registrations being missed.
  • Fixed bug where having API projects in the current Xcode workspace was causing class scanning failures.
  • Fixed bug where startup code that looked for a UIApplicationDelegate was executing before the app had been started. Therefore a nil was being returned.

v2.1.1

  • Updated context description to print the current model. Useful for debugging.
  • Fixed bug where post startup blocks could trigger a lifecycle failure if they called inject dependencies.
  • Refactored startup code with better threading.
  • AcTransient has been moved from injection declarations to factory declarations where it makes far more sense.
You might also like...
Container is a lightweight dependency injection framework for Swift.
Container is a lightweight dependency injection framework for Swift.

Container Container is a lightweight dependency injection framework for Swift. Installation is available in the Swift Package Manager. Swift Package M

Pilgrim - Dependency injection for Swift (iOS, OSX, Linux). Strongly typed, pure Swift successor to Typhoon.

pilgrim.ph Pilgrim is a dependency injection library for Swift with the following features: Minimal runtime-only library that works with pure Swift (s

ViperServices - Simple dependency injection container for services written for iOS in swift supporting boot order

ViperServices Introduction ViperServices is dependency injection container for iOS applications written in Swift. It is more lightweight and simple in

CameraEngine: The most advanced Camera framework in Swift
CameraEngine: The most advanced Camera framework in Swift

CameraEngine THIS REPOSITORY REFACTORED FROM ( https://github.com/remirobert/Cam

The most advanced Safari content blocker and privacy keeper for iOS
The most advanced Safari content blocker and privacy keeper for iOS

The most advanced Safari content blocker and privacy keeper for iOS Top-notch ad blocking in Safari, anti-tracking protection and DNS privacy. Website

Open source SDK to quickly integrate subscriptions, stop worring about code maintenance, and getting advanced real-time data.  Javascript / iOS glue framework
Open source SDK to quickly integrate subscriptions, stop worring about code maintenance, and getting advanced real-time data. Javascript / iOS glue framework

Open source SDK to quickly integrate subscriptions, stop worring about code maintenance, and getting advanced real-time data. Javascript / iOS glue framework

Advanced framework for loading, caching, processing, displaying and preheating images.
Advanced framework for loading, caching, processing, displaying and preheating images.

Advanced framework for loading, caching, processing, displaying and preheating images. This framework is no longer maintained. Programming in Swift? C

ADVANCED APP DESIGN The main goal of this mini project is to inspire you on what we can accomplish with the SwiftUI framework.
ADVANCED APP DESIGN The main goal of this mini project is to inspire you on what we can accomplish with the SwiftUI framework.

Restart-App.0.2 ADVANCED APP DESIGN The main goal of this mini project is to inspire you on what we can accomplish with the SwiftUI framework. COMPLEX

Qiling Advanced Binary Emulation Framework
Qiling Advanced Binary Emulation Framework

Qiling's usecase, blog and related work Qiling is an advanced binary emulation framework, with the following features: Emulate multi-platforms: Window

๐ŸŽˆ Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.
๐ŸŽˆ Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.

๐ŸŽˆ Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.

A TimeZonePicker UIViewController similar to the iOS Settings app. Search and select from a range of cities and countries to find your most suitable time zone.
A TimeZonePicker UIViewController similar to the iOS Settings app. Search and select from a range of cities and countries to find your most suitable time zone.

TimeZonePicker A TimeZonePicker UIViewController similar to the iOS Settings app. Search and select from a range of cities and countries to find your

iOS app which  uses the Moves API to visualize which places you spent the most time at in the last seven days.
iOS app which uses the Moves API to visualize which places you spent the most time at in the last seven days.

Places Places uses the Moves API to visualize which places you spent the most time at in the last seven days. It runs on iOS 7 only and you need to ob

The most power-efficient and lightweight iOS location manager for Swift and ObjC
The most power-efficient and lightweight iOS location manager for Swift and ObjC

IngeoSDK for iOS Overview IngeoSDK is a power-efficient location manager for iOS (Swift and Objective-C), which extends and improves CoreLocation. It

The most flexible and powerful way to build a form on iOS
The most flexible and powerful way to build a form on iOS

The most flexible and powerful way to build a form on iOS. Form came out from our need to have a form that could share logic between our iOS apps and

XLForm is the most flexible and powerful iOS library to create dynamic table-view forms. Fully compatible with Swift & Obj-C.
XLForm is the most flexible and powerful iOS library to create dynamic table-view forms. Fully compatible with Swift & Obj-C.

XLForm By XMARTLABS. If you are working in Swift then you should have a look at Eureka, a complete re-design of XLForm in Swift and with more features

Capstone-saffron - An iOS app that assists with the widely-understood struggle that most adults face

Saffron is an iOS app that assists with the widely-understood struggle that most adults face -- figuring out what they are going to make for breakfast, lunch and/or dinner!

Porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI.

SwiftUI example app: Koober We're porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI and we are sharing the cod

Colloquy is an advanced IRC, SILC & ICB client for macOS and iOS!

Colloquy Dependencies This repository uses git submodules for some of its dependencies, so you will have to check those out as well. You can do this f

Releases(v2.2.11)
Owner
Derek Clarkson
Been there, coded that.
Derek Clarkson
CarbonGraph - A Swift dependency injection / lookup framework for iOS

CarbonGraph is a Swift dependency injection / lookup framework for iOS. You can

Baidu 244 Jan 4, 2023
Cleanse is a dependency injection framework for Swift.

Cleanse - Swift Dependency Injection Cleanse is a dependency injection framework for Swift. It is designed from the ground-up with developer experienc

Square 1.7k Dec 16, 2022
DIKit Dependency Injection Framework for Swift, inspired by KOIN.

DIKit Dependency Injection Framework for Swift, inspired by KOIN. Basically an implementation of service-locator pattern, living within the applicatio

null 95 Dec 22, 2022
A micro-framework that leverages Swift Property Wrappers to implement the Service Locator pattern

Locatable Context Locatable is a Swift micro framework that leverages Property Wrappers to implement the Service Locator pattern, through a custom att

Vincent Pradeilles 116 Jan 9, 2022
Swinject is a lightweight dependency injection framework for Swift.

Swinject Swinject is a lightweight dependency injection framework for Swift. Dependency injection (DI) is a software design pattern that implements In

null 5.6k Dec 31, 2022
Framework-level dependency graph generator for Xcode projects - with support for custom graphing

XCGrapher xcgrapher is, by default, a framework-level dependency graph generator for Xcode projects. It works by reading local clones of the source, s

Max Chuquimia 74 Dec 14, 2022
Swift Ultralight Dependency Injection / Service Locator framework

Swift Ultralight Dependency Injection / Service Locator framework

Michael Long 1.9k Jan 6, 2023
Guise - An elegant, flexible, type-safe dependency resolution framework for Swift

Guise is an elegant, flexible, type-safe dependency resolution framework for Swift. Flexible dependency resolution, with optional caching Elegant, str

null 52 Oct 3, 2022
Needle - Compile-time safe Swift dependency injection framework

Needle is a dependency injection (DI) system for Swift. Unlike other DI frameworks, such as Cleanse, Swinject, Needle encourages hierarchical DI struc

Uber Open Source 1.4k Jan 3, 2023
An elegant, flexible, type-safe dependency resolution framework for Swift

Guise is an elegant, flexible, type-safe dependency resolution framework for Swift. Flexible dependency resolution, with optional caching Elegant, str

null 52 Oct 3, 2022