rentzsch / jrswizzle

one-stop-shop for all your method swizzling needs
MIT License
2.66k stars 416 forks source link

JRSwizzle

Description

JRSwizzle is source code package that offers a single, easy, correct+consistent interface for exchanging Objective-C method implementations ("method swizzling") across many versions of Mac OS X, iOS, Objective-C and runtime architectures.

More succinctly: JRSwizzle wants to be your one-stop-shop for all your method swizzling needs.

Download

$ cd /path/to/top/of/your/project
$ git submodule add git://github.com/rentzsch/jrswizzle.git JRSwizzle semver-1.x
$ git submodule init && git submodule update

# OPTIONAL: Execute the following commands if you want to explicitly peg
# to a certain version. Otherwise `git submodule update` will keep you
# current with HEAD.

$ cd JRSwizzle
$ git checkout v1.1.0

Reasons for Existence

Support

Please use JRSwizzle's GitHub Issues tab to file bugs or feature requests.

To contribute, please fork this project, make+commit your changes and then send me a pull request.

Comparison

There's at least four swizzling implementations floating around. Here's a comparison chart to help you make sense of how they relate to each other and why JRSwizzle exists.

Scenario Swizzle Technology Method Implementation Correct Behavior 10.4 64-bit
1 Classic Direct YES YES NO
2 Classic Inherited NO YES NO
3 Ballard Direct YES YES NO
4 Ballard Inherited YES YES NO
5 Apple Direct YES NO YES
6 Apple Inherited NO NO YES
7 JRSwizzle Direct YES YES YES
8 JRSwizzle Inherited YES YES YES

License

The source code is distributed under the nonviral MIT License. It's the simplest most permissive license available.

Version History