Skip to content

Latest commit

 

History

History
43 lines (29 loc) · 2.45 KB

Readme.adoc

File metadata and controls

43 lines (29 loc) · 2.45 KB

eXtenderZ

Platforms SPM Compatible License happn

Use the full-extent of Objective-C’s runtime dynamicity.

What is this?

This module allows changing the behavior of objects at runtime by creating custom classes on the fly and using isa-swizzling to change the class of the object instances whose behavior you want changed.

See the documentation for more inforation.

Installation

Even though there is no Package.swift file in this project in the main branch, the project is now SPM-compatible, with support for a dynamic and a static version of the package.

⚠️ Important: If you use the static version of the package, you must add the -ObjC flag in Other Linker Flags (OTHER_LDFLAGS) in the build settings of your project.

Compatibility with SPM is provided via an xcframework only. Source SPM-compatibility cannot be provided AFAICT because the project has a part which does not use ARC, and has a custom modulemap.

Carthage installation should work too for the dynamic framework, but it hasn’t been tested.

Versioning Note

The pbxproj sets DYLIB_CURRENT_VERSION and DYLIB_COMPATIBILITY_VERSION to $(MARKETING_VERSION). We set the same versions in both fields because this lib is not meant to be shared between processes, so we don’t really care about the versions.

Notes About the Documentation

The doc compiler (docc) now supports Objective-C modules! \o/ ……… but it does not support extended Objective-C types.

To workaround this and avoid having all the main methods missing from the documentation, I did something terrible. Basically, the methods that are defined in an extension of NSObject will be shown in NSObject_WorkaroundForDoc in the documentation.

See NSObject_WorkaroundForDoc.h for more information.

Credits

This project was originally created by François Lamboley while working at happn.