问题标签 [method-swizzling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
109 浏览

ios - 如何在不遇到无限循环的情况下调整 NSError 初始化

swizzling时如何调用原始的NSErrorinit方法?

我目前的实现

0 投票
2 回答
690 浏览

ios - 如何调配 Swift.print(items:separator:terminator)

我正在寻找调配Swift.print功能的方法。覆盖它不是一种选择,因为如果您使用它可能会绕过它Swift.print(:)

选择器无法识别标识符:

这甚至可能吗?因为 swizzling 是一个obj-c运行时特性。

0 投票
0 回答
71 浏览

objective-c - 是否可以为 Objective-C 中的每个方法调用生成一个包装器?

我有一个包含很多课程的项目。我想在运行时记录(例如到 stderr)每个选择器的调用。
我的主要要求是不要更改现有代码,因此我不能只在每次调用开始时记录函数的参数。

如果在程序执行期间调用了某个方法,例如

我想用类似的东西替换它:

可能吗?

我读过方法调配、KVO、转发消息。

我目前的方法调配方法会导致无限递归:

而且恐怕不可能block3在运行时生成一个或某些方法。有NSSelectorFromString,但没有ImplementationFromString

UPD
我查看了 DTrace util,它看起来非常强大,但不符合我的需求。它需要在 Mac OS 上禁用 SIP,并且在 iOS 上是不可能的,或者在越狱设备上是可能的。

我需要的方法拦截是为调试和生产构建模式创建一个稳定的自定义“框架”。

0 投票
2 回答
771 浏览

ios - 如何从框架中调配 AppDelegate 的 didReceiveRemoteNotification

我正在为 iOS 应用程序(一个 pod)开发一个框架。我想调酒

使用我的框架中定义的方法。这是我的代码:

但是当我运行我的代码时,似乎 originalMethod 的值为零,所以

返回零。我做错了什么?(请考虑我无权访问 AppDelegate,因为正如我所说,我正在开发一个框架)

0 投票
1 回答
116 浏览

objective-c - Xamarin 方法调配不起作用。为什么不?

我有以下 Xamarin.Mac 代码:

https://github.com/alataffective/XamarinSwizzler上的代码示例。

调用时,new Swizzler().AttemptSwizzle()我得到以下输出:

也就是说,混合没有发生。为什么不?

0 投票
0 回答
333 浏览

ios - 如何使用方法 swizzling 更改 iOS 应用程序中使用的系统字体?

我正在创建一个 iOS 应用程序,其中不同的字体必须用于不同的语言。

我试图通过systemFont在应用程序和运行时的任何地方使用来做到这一点,systemFont根据语言更改所指的内容。

以下是用于混合类方法的代码UIFont-

Note-Chalkduster用于方便观察字体变化。

applicationDidFinishLaunching(_:),调用以下代码

当应用程序运行时,我观察到对于任何以编程方式创建的视图,systemFont都会更改并使用Chalkduster字体。

但是,对于从 xib 文件实例化的任何视图,系统字体不会更改。

谁能指出如何在不更改 xib 文件中的字体的情况下更改 xib 文件中使用的系统字体?

0 投票
1 回答
87 浏览

ios - Swizzling UIImage.init(named:) 在获取实例方法时返回 nil

我正在尝试调配UIImage初始化函数,但是在尝试获取实例函数时,它们返回 nil。任何想法?

0 投票
1 回答
392 浏览

ios - Swizzling UIImage init 不工作 iOS Swift

我正在尝试调配UIImage.init(named:),但没有调用 init

用法

不工作

0 投票
1 回答
376 浏览

ios - 跟踪自定义分析框架 iOS 的 ViewController 和 UIControls 的所有事件

我正在开发一个分析 SDK,它将跟踪所有用户事件,哪个视图出现或消失,单击哪个按钮,打开或关闭哪个 UISwitch,滚动 UITableView 或点击单元格等。

我正在使用方法调配来实现此功能,但我看到了一些与此相关的缺点

  1. 如果 swizzling 发生多次,您的代码将无法工作,或者 firebase(或任何其他使用相同方法的框架)将无法工作。

  2. 当更新的 iOS 版本发布时,swizzling 可能会失败。您可能必须每次都进行交叉检查。

我已经阅读了这篇文章的缺点

https://medium.com/@abhimuralidharan/method-swizzling-in-ios-swift-1f38edaf984f

这是我如何跟踪的示例代码 1. ViewDidAppeard 跟踪

2.带有扩展UIButton的ButtonClick跟踪

如何跟踪所有事件最好的方法或解决方案是什么?

0 投票
1 回答
51 浏览

ios - 是否可以调配 NSAttributedString.init(string:attributes)?

我正在尝试调配NSAttributedString,但出现编译错误:

错误

这个错误是有道理的。我们有什么办法可以解决这个问题以保留函数签名并调整 init 函数?