Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们在Swift中使用self_Swift - Fatal编程技术网

为什么我们在Swift中使用self

为什么我们在Swift中使用self,swift,Swift,我是Swift的新手,有一些C编程的背景,我一直在学习Swift语言的网络教程。在下面的代码中,我试图解析RSS应用程序的XML。下面的代码来自我在网上看到的教程。每当我看到self时,我都无法理解它背后的真正概念。到目前为止,我的理解是,代表向self发送消息,但是在下面的上下文中,我不是很清楚 import Foundation struct RSSItem { var title: String var description: String var pubDat

我是Swift的新手,有一些C编程的背景,我一直在学习Swift语言的网络教程。在下面的代码中,我试图解析RSS应用程序的XML。下面的代码来自我在网上看到的教程。每当我看到self时,我都无法理解它背后的真正概念。到目前为止,我的理解是,代表向self发送消息,但是在下面的上下文中,我不是很清楚

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手册中发布的代码中是可选的。