声明"public typealias AnyObject"如何使AnyObject成为协议?

NoP*_*rob 6 ios swift

当我按下Command并单击AnyObject导航到界面时AnyObject,我遇到了以下定义:

public typealias AnyObject
Run Code Online (Sandbox Code Playgroud)

我在定义上面看到了这条评论:

所有类隐式符合的协议.

好吧,我不明白这个定义如何AnyObjectprotocol没有明确使用关键字的情况下生成protocol.此外,它是一个typealias没有= someType,这是一个无效的声明.

我不能写一个如下的声明:

public typealias SomeOtherObject
Run Code Online (Sandbox Code Playgroud)

它给出了编译错误.

谁能解释一下究竟发生了什么?

SIl*_*ter 5

问题是,按住AnyObject不放CMD你实际上不会看到源代码,而只是一个public界面。如果你深入研究 Swift 源代码,你实际上会发现

public typealias AnyObject

实际上是这样的:

public typealias AnyObject = Builtin.AnyObject

这是包含此代码的文件的链接https://github.com/apple/swift/blob/master/stdlib/public/core/Policy.swift