当我按下Command并单击AnyObject导航到界面时AnyObject,我遇到了以下定义:
public typealias AnyObject
Run Code Online (Sandbox Code Playgroud)
我在定义上面看到了这条评论:
所有类隐式符合的协议.
好吧,我不明白这个定义如何AnyObject在protocol没有明确使用关键字的情况下生成protocol.此外,它是一个typealias没有= someType,这是一个无效的声明.
我不能写一个如下的声明:
public typealias SomeOtherObject
Run Code Online (Sandbox Code Playgroud)
它给出了编译错误.
谁能解释一下究竟发生了什么?
问题是,按住AnyObject不放CMD你实际上不会看到源代码,而只是一个public界面。如果你深入研究 Swift 源代码,你实际上会发现
public typealias AnyObject
实际上是这样的:
public typealias AnyObject = Builtin.AnyObject
这是包含此代码的文件的链接https://github.com/apple/swift/blob/master/stdlib/public/core/Policy.swift