在Swift 3中,在这个例子中,self指的是什么对象

时间:2017-08-26 23:23:06

标签: swift self

在下面的代码中,我对于" self"实际上指的是。

let imageURL = URL(string : “http://exampleURLh.jpg”)!
let task=imageDataURLSession.sharedSession().dataTaskWithURL(imageURL, {(data, response, error) in
    print (“task finished”)
}
task.resume()
if error == nil {
    let downloadedImage = UIImage(data: data!)

    self.imageView.image = downloadedImage
}

我知道我使用其image属性将downloadedImage设置为imageView,但我不确定为什么需要self以及它在这种情况下拥有哪些数据。我知道它指的是正在处理的viewController类的一个实例,但该实例是UIImage,downloadedImage还是示例URL中图像的资源数据?

2 个答案:

答案 0 :(得分:1)

由于类继承,仅通过查看self引用的代码是不可能知道的。这完全取决于运行时self 的内容。

self表示最初向其发送邮件的实际实例,但您甚至没有显示此代码被包装的方法,因此即使猜测也没有足够的信息。

如果您对某些特定场合self有疑问,请记录(使用NSLogprint)。

答案 1 :(得分:0)

当你调用一个对象的(非静态/类)函数时,你可以这样调用它:

obj.function()

function()内,self指的是被调用的对象(在这种情况下为obj)。 self就像一个自动变量,你可以方便地引用函数调用的目标。

在您的情况下,很明显此代码来自某种类型的ViewController。该VC有一个imageView属性,代表(可能)VC中的UIImageView。我猜你的代码在viewDidLoad(或类似的)调用的函数内部,或者它可能是按钮点击的目标。

调用这些函数时,self将引用调用该函数的ViewController对象。