247得票8回答
Objective-C中方法交换的危险是什么?

我听说过有人说方法混淆是一种危险的做法。甚至混淆这个名字本身就暗示了它有点欺骗性。 方法混淆是修改映射,使得调用选择器A实际上会调用实现B。其中一个使用场景是扩展闭源类的功能。 我们能否系统化地列出风险,以便任何决定是否使用混淆的人都可以明智地决定是否值得为他们所要做的事而冒这个风险。 ...

14得票3回答
调试Core Data __NSCFSet addObject nil异常

我的单元测试中出现异常,错误信息如下,在 Core Data 线程上: CoreData: error: Serious application error. Exception was caught during Core Data change processing. This...

13得票3回答
如何在Swift中模拟NSDate?

我需要测试一些日期计算,但是为了这样做,我需要在Swift中模拟NSDate()。整个应用程序都是用Swift编写的,我也想在其中编写测试。我尝试过方法交换,但它不起作用(或者更可能是我做错了什么)。extension NSDate { func dateStub() -> NS...

12得票5回答
Swift中的方法交换

关于UINavigationBar有一个小问题,我在努力克服它。当您使用视图控制器中的prefersStatusBarHidden()方法隐藏状态栏时(我不想禁用整个应用程序的状态栏),导航栏将失去属于状态栏的20pt高度,即导航栏会缩小。 我试过不同的解决方法,但发现每种方法都有缺点...

12得票1回答
在iOS应用中有没有列出所有经过交换的方法的方法?

我需要一种方法来检测第三方库的方法交换(swizzle)情况。最近我遇到这样一种情况,广告库使用了一个奇怪的AFNetworking分叉(fork)版本。AFNetworking进行了NSURLSessionTask的方法交换(swizzle),但是在某些情况下,这两个交换并未产生良好的效果。...

11得票2回答
从交换方法中调用原始函数

我正在尝试使用方法交换技术(method swizzling),并希望在执行method_exchangeImplementations后调用原始函数。我已经为此设置了两个项目。 第一个项目是应用程序的主要项目,包括应用所有逻辑。请注意,在视图加载时调用了originalMethodName...

11得票1回答
方法混淆和isa混淆是相同的吗?

方法交换和isa交换是一回事吗?如果不是,那么isa交换是什么?

10得票2回答
在Swift中进行属性的方法交换

虽然在 obj-c 中可以替换 setMyProperty: 方法,但我想知道如何在 swift 中实现? 例如,我想要替换 UIScrollView::setContentOffset: 方法:let originalSelector: Selector = #selector(UIScr...

8得票1回答
方法交换无法正常工作

我想使用方法交换,但无法让简单的示例代码正常运行。我可能误解了这个概念,但据我所知,它允许交换方法的实现。 给定两种方法A和B,我想交换它们的实现,以便调用A会执行B。我找到了一些关于交换方法的例子(example1 和 example2)。我创建了一个新项目并添加了一个类来测试它。 cl...

8得票1回答
目标-C方法交换的性能问题

在使用Objective-C的方法交换时,会有哪些性能惩罚? 使用消息交换会破坏哪些编译器优化(如果有)?