问题标签 [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.
objective-c - Objective-C 方法调配性能
在 Objective-C 中使用方法调配时会产生哪些性能损失?
如果有的话,哪些编译器优化会因消息混合而失败?
ios - swizzle popViewControllerAnimated 时的 EXC_BAD_ACCESS:
为了记录控制器之间的导航,我使用了 -popViewControllersAnimated: 方法的 swizzling。有时它会导致 EXC_BAD_ACCESS 出现奇怪的崩溃。可能是什么原因?
android - Android 是否有类似 iOS 方法调配的功能(用于 PhoneGap 插件初始化)?
我正在为 iOS 和 Android 编写一些包装第三方原生 SDK 的 PhoneGap 插件。在 iOS 的情况下,我可以使用 swizzling 来添加行为来AppDelegate
初始化这些库。
现在我需要为 Android 做同样的事情,我现在确定如何去做。例如,我现在正在使用AppsFlyer SDK,这就是文档所说的初始化方式:
有没有在 PhoneGap 插件中做这样的事情的技术?我需要能够从头开始构建项目,而 Android Studio 项目本身不受源代码控制。
谢谢!
objective-c - 调和一些保留的东西
大家好,我不太明白retain
。
这里有这段代码:
我正在尝试调整它,所以每当他们要求带有名称的图像时,NSApplicationIcon
我都会给它我的自定义图标。我仍然有时会看到原始图标回来。我想是因为这个保留的东西吗?我对吗?是否可以清除保留?这将使我的调酒工作 100% 的时间而不是像现在这样只有 80% :(
我在这里读到了,retain
但我无法应用它来帮助我解决上述情况:http: //www.cocoawithlove.com/2010/06/assign-retain-copy-pitfalls-in-obj-c.html
非常具体地,我想在这里调整一下:https ://dxr.mozilla.org/mozilla-central/source/widget/cocoa/nsMacDockSupport.mm?offset=200#140
ios - Objective-C,iOS 9 中的高级方法?
问题很简单。我需要和往常一样 - 如何用我的方法替换原始方法,但@selector(presentViewController:animated:completion:)
在 iOS9 中?它仅适用于 iOS9 模拟器,不适用于真实设备。
是的,此代码被调用,但随后您得到EXC_BAD_ACCESS
.
为了测试它,我从“Master-Detail 模板”创建了一个测试应用程序,添加了一个按钮并添加了以下代码:
更新
几乎相同的代码写在 NSHipster 网站上
更新
警告!这个错误在非常随机的设备上重现(在我的情况下是 iphone5 + ios9.0,但其他用户有更新的设备和 iOS9.1)。
ios - 使用 StaticString 在 Swift 中调动
我正在尝试调配一个包含 StaticString 参数的 Swift 函数。
这是我尝试过的:
但是,这不起作用,如果我将 str 的类型更改为 String,我们可以正常 swizzle,任何人都有机会 swizzle 带有 StaticString 类型参数的函数可以帮忙吗?
谢谢
objective-c - Objective-C中方法调配的正确方法
目前正在使用swizzling
Objective-C 中的方法进行试验,我有一个问题。我试图了解方法调酒的正确方法,在网上研究后,我偶然发现了这篇 NSHipster 帖子:
http ://nshipster.com/method-swizzling/
在帖子中,作者有一些方法调配示例代码。我正在找人更好地向我解释作者在做什么。特别是我对didAddMethod
逻辑感到困惑。为什么作者不只是直接swapping/exchanging
方法实现?我对此的唯一理论是可能还有一些viewWillAppear:
尚未添加的机会UIViewController's method
dispatch_table
。特别是如果该类别可能先加载到内存中UIViewController
......这是原因吗?好像比较奇怪?只是寻找更多的洞察力/清晰度,谢谢:)
objective-c - 如何正确使用 method_setImplementation() 进行调配?
我试图了解如何正确使用method_setImplementation()
. 到目前为止,我在网上看到了两种主要流行的调酒方法,一种是使用method_setImplementation()
while 其他 levarages method_exchangeImplementation
。
使用 swizzling 时,method_exchangeImplementation()
您可能会遇到目标类未实现您尝试 swizzle 的方法的问题。为了避免祖先类实现该方法并错误地调配该方法时出现问题,您首先将一个实现添加到您的目标类,然后将 swizzledMethodIMP
与您的祖先类方法交换以使事情井井有条。这一切对我来说都很有意义......
我的问题是我们如何处理与 swizzling 时相同的上述情况method_setImplementation
?我们不需要处理这个案子吗(直觉上我觉得我们需要处理)?如果我们确实需要处理上述案例示例代码将对我有很大帮助,因为我不知道如何处理它。
c# - C# 方法的交换实现
是否可以在 C# 中交换方法的实现,例如 Objective-C 中的方法调配?
所以我可以在运行时用我自己的(或添加另一个)替换现有的实现(来自外部源,例如通过 dll)。
我已经搜索过这个,但没有发现任何有价值的东西。