【问题标题】:Swift reserved function names?Swift 保留函数名?
【发布时间】:2014-06-26 23:40:02
【问题描述】:
谁能解释一下某些函数是如何被调用的?当有人像这样创建新对象时,是否会自动调用名为 init 的函数:var object: type = type(param1)。
我也在NSURLConnection 中看到了这一点。方法似乎有类似connectionDidFinishLoading 之类的名称,但我不明白,它是否被编码成快速语言以使该名称具有特殊操作?该功能是否会在连接完成后立即运行?除非您向该功能“发送消息”,否则它甚至会如何知道。
【问题讨论】:
标签:
function
methods
swift
reserved
【解决方案1】:
首先,在 Swift 中,您不再向对象“发送消息”。函数和方法调用由编译器直接链接在一起。唯一的例外是当您拥有从 NSObject 继承的对象时,因为它仍然在 Objective-C 运行时上运行。
其次,type(param1) 是 init 函数的示例。它不是“自动”调用它。这就是您定义initializer methods in Swift 的方式。您在创建对象时直接调用它。
第三个connectionDidFinishLoading 在NSURLConnectionDataDelegate 上定义。当你创建一个NSURLConnection 时,你可以给它一个应该实现这个协议的委托。如果您将对象设置为实现协议的委托,NSURLConnection 实例将在适当时调用该方法。这就是 UIKit 和 Cocoa 中的 Delegate Pattern 的工作原理。