jrswizzle-Pinka 1.0.2

jrswizzle-Pinka 1.0.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2014 年 12 月

ipinka 维护。



  • ipinka

JRSwizzle

描述

JRSwizzle 是一个源代码包,它提供了一种简单、正确、一致的接口,用于在许多版本的 Mac OS X、iOS、Objective-C 和运行时架构之间交换 Objective-C 方法实现(“方法交换”)。

更简洁地说: JRSwizzle 想成为您所有方法交换需求的一站式商店。

下载

$ 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.0

存在原因

  • 简单:只需这样做:[SomeClass jr_swizzle:@selector(foo) withMethod:@selector(my_foo) error:&error]; 立竿见影。
  • 正确:方法交换与方法继承之间存在微妙的交互。遵循 Kevin Ballard 的脚踪,这个包做了正确的事情。
  • 兼容:JRSwizzle 应该在任何您关心的 Mac OS X 和 iOS 版本上正常工作。以下是详尽的兼容性列表
    • Mac OS X v10.3/ppc(Ballard 实现)
    • Mac OS X v10.4/ppc(Ballard 实现)
    • Mac OS X v10.4/i386(Ballard 实现)
    • Mac OS X v10.5/ppc(method_exchangeImplementations+Ballard 实现)
    • Mac OS X v10.5/i386(method_exchangeImplementations+Ballard 实现)
    • Mac OS X v10.5/ppc64(method_exchangeImplementations+Ballard 实现)
    • Mac OS X v10.5/x86_64(method_exchangeImplementations+Ballard 实现)
    • iOS 2.0+(method_exchangeImplementations+Ballard 实现)
  • 健壮:所有参数都会被检查,并且 JRSwizzle 会返回一个带高质量诊断的 NSError 可选对象。

支持

请使用 JRSwizzle 的 GitHub 问题选项卡报告错误或功能请求

要做出贡献,请分叉此项目,提交您的更改,然后向我发送拉取请求。

比较

至少有四种交换实现流传。以下是比较表,以帮助您理解它们如何相互关联以及为什么存在 JRSwizzle。

场景 交换技术 方法实现 正确行为 10.4 64 位
1 经典 直接
2 经典 继承的
3 Ballard 直接
4 Ballard 继承的
5 Apple 直接
6 Apple 继承的
7 JRSwizzle 直接
8 JRSwizzle 继承的

许可证

源代码是在非病毒性的 MIT 许可证下分发的。这是最简单、最自由的许可证之一。

版本历史

  • v1.0: 2012 年 3 月 2 日

  • v1.0d1: 2009 年 5 月 31 日

    • [修复] 通过将 hoisted_method_list->obsolete 设置为 NULL,缓解了 valgrind 的读取问题。 (Daniel Jalkut)

    • [修复] Xcode 3.2 现在似乎需要为 10.3 目标显式设置 ARCHS。 (rentzsch)

  • v1.0d0: 2009 年 4 月 9 日

    • 迁移到 github。
  • v1.0d0: 2007 年 12 月 28 日

    • 正在开发中。