问题标签 [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 - 是否可以在 swift 项目中禁用方法调配?
我有一个带有 3rd 方框架的非常大的项目,并且想禁用方法调配以确保 3rd 方框架不会弄乱默认的预期行为。可能吗?项目设置中有一些标志吗?
android - 通过反射/类加载器替换Android中的方法实现
我目前正在研究移动应用程序的运行时操作技术。在 iOS 平台上,我可以通过调用诸如 class_replaceMethod(...) 之类的 Objective-C 运行时库函数轻松地进行方法调配。在Android上是否可以使用等效方式?
如果我使用 JDB,我可以更改局部变量并评估表达式。通过后者,我假设可以更改方法的整个实现主体。您将如何做到这一点,例如使用反射?需要哪些步骤?
提前致谢!
ios - 在混合方法中识别方法名称
我有许多类,并且在类内部定义了许多方法。当每个方法被调用时,我需要执行一组特定的操作。我可以在每个方法中编写一组操作。但我不想弄乱代码。所以我创建了一个辅助类,在里面我将传递一组类和选择器。
我已经遍历了数组,并使用了 swizzling 技术,并将每个方法的实现与帮助程序类中定义的自定义方法进行了交换。因此,每当上述任何类中的任何方法被触发时,我都会调用我的自定义 swizzling 方法。
但我的问题是我无法区分哪个是触发的原始方法。基于此,一些参数将在我上面提到的自定义操作集中发生变化。
我目前的实现如下:
而当前的 swizzled 方法是:
因此,每当调用选择器数组中列出的任何方法时,该方法trackMethodInvocation()
都会触发,但我需要知道trackMethodInvocation()
.
有什么方法可以知道哪个是 swizzled 方法中的原始方法。
swift - NSLocale.currentLocale 从 swift 2.3 到 swift 3 的端口方法 swizzle
Swift 3 在 NSLocale(现在的 Locale)类中引入了很多变化。我需要执行方法 swizzleNSLocale.currentLocale()
来执行一些助手的单元测试。使用 Swift 2.3,我可以使用这种方法:
现在的问题是 Swift 3currentLocale
不再是,它已经被 property 取代了current
。
Swift 3 怎么能达到同样的效果呢?
ios - 方法调配在 iOS 10.1 上不起作用
我想调配@property string
方法UIPasteboard
:
当我调用[[UIPasteboard generalPasteboard] setString:@"test"];
它时,输入我的调酒方法。它适用于 iOS 7、iOS 8 和 iOS 9。但是,它在 iOS 10 上失败。
组装不同的测试方法:</p>
在 iOS 9 上:
在 iOS 10 上:
ios - UIViewController 方法 swizzling 不起作用
我在 UIViewController 上使用一个类别来调整 viewWillAppear: 跨多个 ViewControllers 的方法。
当我从 Storyboard 加载初始 VC 时,从不调用 swizzled 方法。只有在 VC 中的 viewWillAppear 方法被注释掉时才会调用它。但是,当我删除类别并将代码移动到单个 VC 中时,这两种方法都会被调用。
如果要进行调配,可以在 VC 中实现 viewWillAppear 吗?如果没有,如果我需要在 VC 的 viewWillAppear 中编写一些代码,我该如何处理?
ios - 防止方法混杂 Objective-c
我正在尝试搜索以防止在我当前的库中使用 Method Swizzle,但我发现的每个文档或博客文章或多或少都是关于如何实现 Swizzling。关于Method swizzling,我有几个问题我无法找到。
- 如何在运行时检测 Method Swizzling?
- 如果有一个 Method Swizzle 如何防止它?
我知道方法混用的危险,并且已经浏览了这里的相关帖子,但找不到相关信息来防止它。
如果有任何关于上述主题的文档或博客文章,我将非常感谢您的帮助。
ios - 在这两种机制之间混合时有什么区别
这两种调酒方式略有不同。我只想澄清他们之间是否存在根本不同或错误
假设我们正在viewDidLoad
调动UIView
第一种方式(使用class_addMethod
):
第二种方式(不使用class_addMethod
):
swift - 如何在 swift 3 中调整 URLSession 类方法 dataTask
我想调整 URLSession 类方法 dataTask 但无法完成。
我在objective-c中尝试了这种混合,并且它工作正常,现在我想在swift 3中实现它但没有得到任何东西。
我参考 了这个链接,但它在 swift 3 中不起作用。
请帮我。