我是 swift 新手。
这是来自此示例 becoming_a_now_playable_app 的代码,位于
AssetPlayer
的 handlePlayerItemChange()
方法中。
guard let currentIndex = playerItems.firstIndex(where: { $0 == currentItem }) else { return }
这里,
playerItems
是AVPlayerItem
的数组,currentItem
是AVPlayerItem
。
我无法理解这段代码是如何工作的。
isEqual()
如何可能AVPlayerItem
?我在 isEqual()
找不到任何重写的方法,例如 hash()
或 AVPlayerItem
。
对于 NSObject 子类,
isEqual()
的默认实现是指针相等,在 Swift 中表示为 ===
。因此,如果任何两个 NSObject 是同一个对象,那么它们就相等,这就是这里发生的情况。