“==”如何与 UIViewController 一起工作?
How does '==' work with UIViewControllers?
在UIPageViewController
的使用教程中,有一段代码是这样的:
if self == parent.pages.first {
self.label_Back.isUserInteractionEnabled = false
}
这主要是检查 self
是否是第一个控制器堆栈。这是如何工作的?
而且,如果我们在 UIViewController
的 pages
数组中有多个控制器 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 ===
,也就是说,这是真的,以防万一它们是相同的视图控制器对象。
在UIPageViewController
的使用教程中,有一段代码是这样的:
if self == parent.pages.first {
self.label_Back.isUserInteractionEnabled = false
}
这主要是检查 self
是否是第一个控制器堆栈。这是如何工作的?
而且,如果我们在 UIViewController
的 pages
数组中有多个控制器 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 ===
,也就是说,这是真的,以防万一它们是相同的视图控制器对象。