我正在研究 iOS NUI 框架源代码。我发现了以下代码行,但我不知道它是如何工作的
- (void)override_didMoveToWindow
{
if (!self.isNUIApplied) {
[self applyNUI];
}
[self override_didMoveToWindow];
}
需要明确的是,他们用此方法混合了 DidMoveToWindow 的原始实现,以便在运行时应用类/样式。让我困惑的是上面的函数从未导致任何无限循环。
最佳答案
这可能有帮助:http://darkdust.net/writings/objective-c/method-swizzling
swizzled方法实际上是和原来的方法进行了交换。因此,当调用原始方法时,混合方法已经交换了实现。并且调用“swizzled方法”override_didMoveToWindow方法会调用原来的函数。
关于iOS DidMoveToWindow 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20336706/