“==”如何与 UIViewController 一起工作?

How does '==' work with UIViewControllers?

UIPageViewController的使用教程中,有一段代码是这样的:

if self == parent.pages.first {
    self.label_Back.isUserInteractionEnabled = false
}

这主要是检查 self 是否是第一个控制器堆栈。这是如何工作的?

而且,如果我们在 UIViewControllerpages 数组中有多个控制器 class 的实例,是否可以执行下面的 firstIndex 操作?

/**
 Notifies '_tutorialDelegate' that the current page index was updated.
 */
private func notifyTutorialDelegateOfNewIndex() {
    if let firstViewController = viewControllers?.first,
        let index = self.pages.firstIndex(of: firstViewController) {
            tutorialDelegate?.tutorialPageViewController(tutorialPageViewController: self, didUpdatePageIndex: index)
    }
}
if self == parent.pages.first

这些是 Cocoa (Objective-C) 个对象 — UIViewController,继承自 NSObject:

  • Swift == 在没有覆盖调用 isEqual: 的 Objective-C 对象上,继承自 NSObject。

  • 对于 NSObject,在没有覆盖的情况下,isEqual: 默认为对象标识。

所以这就像 Swift ===,也就是说,这是真的,以防万一它们是相同的视图控制器对象。