Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 为什么我们的URLSession对象是变量而不是常量_Swift_Urlsession - Fatal编程技术网

Swift 为什么我们的URLSession对象是变量而不是常量

Swift 为什么我们的URLSession对象是变量而不是常量,swift,urlsession,Swift,Urlsession,我正在学习使用RESTAPI从第三方服务器获取JSON的教程。我们正在构建一个networkProcessor类,通过在ViewController中创建该类的实例来为网络调用创建url会话,我们将能够在其中使用它。我注意到,作者将会话占位符声明为变量,而不是一个常量,它违背了我在使用XCODEL时所学到的知识,它总是首先考虑使用常量。作者之所以选择将其作为变量而不是常量,有什么具体原因吗 以下是我到目前为止的情况: import Foundation class NetworkProces

我正在学习使用RESTAPI从第三方服务器获取JSON的教程。我们正在构建一个networkProcessor类,通过在ViewController中创建该类的实例来为网络调用创建url会话,我们将能够在其中使用它。我注意到,作者将会话占位符声明为变量,而不是一个常量,它违背了我在使用XCODEL时所学到的知识,它总是首先考虑使用常量。作者之所以选择将其作为变量而不是常量,有什么具体原因吗

以下是我到目前为止的情况:

import Foundation


class NetworkProcessor {


    lazy var configuration: URLSessionConfiguration = URLSessionConfiguration.default
    lazy var session: URLSession = URLSession.init(configuration: self.configuration)

    let url: URL

    //since it is a class we need to initalize this class
    init(url: URL) {
        self.url = url
    }
}

当您使用关键字lazy时,不能同时使用let关键字。懒惰属性必须是变量而不是常量。

可能是因为您不能拥有
懒惰let
属性,尽管它也没有太多懒惰的理由。@dan为什么它没有太多懒惰的理由呢?是因为我们正在创建一个类,在这个类中它将以抽象的方式使用吗?我想说的是,我们可以在初始化这个类时传入这些参数吗?