iOS DidMoveToWindow 无限循环

标签 ios iphone objective-c

我正在研究 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/

相关文章:

ios - 检测应用程序是否在备份恢复后启动

javascript - iPhone上的pageshow事件仅触发一次

iphone - 错误 : This endpoint has been deprecated

iphone - 用代码更新应用

objective-c - 网络扩展 - NEVPNManager

ios - 为 UITableViewCell 设置彩色边框

ios - 如何在 Swift 中点击表格 View 的单元格

ios - 尝试呈现 View Controller 时,对开始/结束外观转换的调用不平衡

iphone - 让本地通知振动但不显示文本

objective-c - 从一个 NSMutableArray 中删除包含在另一个数组中的元素