为什么我们在Swift中使用self
我是Swift的新手,有一些C编程的背景,我一直在学习Swift语言的网络教程。在下面的代码中,我试图解析RSS应用程序的XML。下面的代码来自我在网上看到的教程。每当我看到self时,我都无法理解它背后的真正概念。到目前为止,我的理解是,代表向self发送消息,但是在下面的上下文中,我不是很清楚为什么我们在Swift中使用self,swift,Swift,我是Swift的新手,有一些C编程的背景,我一直在学习Swift语言的网络教程。在下面的代码中,我试图解析RSS应用程序的XML。下面的代码来自我在网上看到的教程。每当我看到self时,我都无法理解它背后的真正概念。到目前为止,我的理解是,代表向self发送消息,但是在下面的上下文中,我不是很清楚 import Foundation struct RSSItem { var title: String var description: String var pubDat
import Foundation
struct RSSItem {
var title: String
var description: String
var pubDate: String
}
class feedParser: NSObject, XMLParserDelegate {
private var rssItems: [RSSItem] = []
private var currentElement = ""
private var currentTitle: String = "" {
didSet {
currentTitle = currentTitle.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
private var currentDescription: String = "" {
didSet {
currentDescription = currentDescription.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
private var currentPubDate: String = "" {
didSet {
currentPubDate = currentPubDate.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
private var parserCompletionHandler: (([RSSItem]) -> Void)?
func parseFeed(url: String, completionHandler: (([RSSItem]) -> Void)?) {
// Use of self on the following line:
self.parserCompletionHandler = completionHandler
}
}
self
消除了在处理类和继承类中存在的成员名称时的歧义
在您的特定示例中,它是可选的 self是实例的一个特殊属性,它保存实例本身。大多数情况下,self出现在类、结构或枚举的初始值设定项或方法中。以下是非程序员机器人的答案:
self
在需要访问类的成员时非常有用和必要,但继承的类也包含相同的成员名。它消除了歧义。self
的使用在您在Swift手册中发布的代码中是可选的。