'=='如何与UIViewControllers一起使用?

Gle*_*enn 0 uiviewcontroller ios uipageviewcontroller swift

在使用的教程中UIPageViewController,有这样的代码:

if self == parent.pages.first {
    self.label_Back.isUserInteractionEnabled = false
}
Run Code Online (Sandbox Code Playgroud)

基本上检查哪个是否self是第一个控制器堆栈。这是如何运作的?

而且,如果我们有一个控制器类的多个实例中pages的阵列UIViewController,将做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)
    }
}
Run Code Online (Sandbox Code Playgroud)

mat*_*att 8

if self == parent.pages.first
Run Code Online (Sandbox Code Playgroud)

这些是可可(Objective-C)对象-UIViewController,源于NSObject:

  • ==在没有覆盖调用的情况下,在Objective-C对象上进行Swift 处理,该操作isEqual:继承自NSObject。

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

因此,这就像Swift一样===,也就是说,在这些对象完全相同的视图控制器对象中,也是如此。