问题标签 [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.
ios - 如何在不遇到无限循环的情况下调整 NSError 初始化
swizzling时如何调用原始的NSError
init方法?
我目前的实现
ios - 如何调配 Swift.print(items:separator:terminator)
我正在寻找调配Swift.print
功能的方法。覆盖它不是一种选择,因为如果您使用它可能会绕过它Swift.print(:)
选择器无法识别标识符:
这甚至可能吗?因为 swizzling 是一个obj-c
运行时特性。
objective-c - 是否可以为 Objective-C 中的每个方法调用生成一个包装器?
我有一个包含很多课程的项目。我想在运行时记录(例如到 stderr)每个选择器的调用。
我的主要要求是不要更改现有代码,因此我不能只在每次调用开始时记录函数的参数。
如果在程序执行期间调用了某个方法,例如
我想用类似的东西替换它:
可能吗?
我读过方法调配、KVO、转发消息。
我目前的方法调配方法会导致无限递归:
而且恐怕不可能block3
在运行时生成一个或某些方法。有NSSelectorFromString
,但没有ImplementationFromString
。
UPD
我查看了 DTrace util,它看起来非常强大,但不符合我的需求。它需要在 Mac OS 上禁用 SIP,并且在 iOS 上是不可能的,或者在越狱设备上是可能的。
我需要的方法拦截是为调试和生产构建模式创建一个稳定的自定义“框架”。
ios - 如何从框架中调配 AppDelegate 的 didReceiveRemoteNotification
我正在为 iOS 应用程序(一个 pod)开发一个框架。我想调酒
使用我的框架中定义的方法。这是我的代码:
但是当我运行我的代码时,似乎 originalMethod 的值为零,所以
返回零。我做错了什么?(请考虑我无权访问 AppDelegate,因为正如我所说,我正在开发一个框架)
objective-c - Xamarin 方法调配不起作用。为什么不?
我有以下 Xamarin.Mac 代码:
https://github.com/alataffective/XamarinSwizzler上的代码示例。
调用时,new Swizzler().AttemptSwizzle()
我得到以下输出:
也就是说,混合没有发生。为什么不?
ios - 如何使用方法 swizzling 更改 iOS 应用程序中使用的系统字体?
我正在创建一个 iOS 应用程序,其中不同的字体必须用于不同的语言。
我试图通过systemFont
在应用程序和运行时的任何地方使用来做到这一点,systemFont
根据语言更改所指的内容。
以下是用于混合类方法的代码UIFont
-
Note-Chalkduster
用于方便观察字体变化。
中applicationDidFinishLaunching(_:)
,调用以下代码
当应用程序运行时,我观察到对于任何以编程方式创建的视图,systemFont
都会更改并使用Chalkduster
字体。
但是,对于从 xib 文件实例化的任何视图,系统字体不会更改。
谁能指出如何在不更改 xib 文件中的字体的情况下更改 xib 文件中使用的系统字体?
ios - Swizzling UIImage.init(named:) 在获取实例方法时返回 nil
我正在尝试调配UIImage
初始化函数,但是在尝试获取实例函数时,它们返回 nil。任何想法?
ios - Swizzling UIImage init 不工作 iOS Swift
我正在尝试调配UIImage.init(named:)
,但没有调用 init
用法
不工作
ios - 跟踪自定义分析框架 iOS 的 ViewController 和 UIControls 的所有事件
我正在开发一个分析 SDK,它将跟踪所有用户事件,哪个视图出现或消失,单击哪个按钮,打开或关闭哪个 UISwitch,滚动 UITableView 或点击单元格等。
我正在使用方法调配来实现此功能,但我看到了一些与此相关的缺点
如果 swizzling 发生多次,您的代码将无法工作,或者 firebase(或任何其他使用相同方法的框架)将无法工作。
当更新的 iOS 版本发布时,swizzling 可能会失败。您可能必须每次都进行交叉检查。
我已经阅读了这篇文章的缺点
https://medium.com/@abhimuralidharan/method-swizzling-in-ios-swift-1f38edaf984f
这是我如何跟踪的示例代码 1. ViewDidAppeard 跟踪
2.带有扩展UIButton的ButtonClick跟踪
如何跟踪所有事件最好的方法或解决方案是什么?
ios - 是否可以调配 NSAttributedString.init(string:attributes)?
我正在尝试调配NSAttributedString
,但出现编译错误:
错误
这个错误是有道理的。我们有什么办法可以解决这个问题以保留函数签名并调整 init 函数?