Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 3中,self在本例中指的是什么对象_Swift_Self - Fatal编程技术网

在Swift 3中,self在本例中指的是什么对象

在Swift 3中,self在本例中指的是什么对象,swift,self,Swift,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

在下面的代码中,我对“自我”实际上指的是什么感到困惑

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属性将downloadeImage设置为imageView,但我不确定为什么需要self,以及在这种情况下它保存了哪些数据。我知道它指的是正在处理的viewController类的一个实例,但该实例是UIImage、DownloadeImage还是示例URL中图像的资源数据?

由于类继承,仅通过查看代码就不可能知道
self
指的是什么。这完全取决于运行时的
self
是什么

self
表示消息最初发送给的实际实例,但您甚至没有显示此代码的包装方法,因此没有足够的信息进行猜测

如果您在某些特定情况下怀疑
self
是什么,请记录它(使用
NSLog
print
)。

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

obj.function()
function()
内部,
self
指调用它的对象(在本例中是
obj
self
就像一个自动变量,可以方便地引用函数调用的目标

在您的例子中,很明显,这段代码来自某种ViewController。该VC具有一个imageView属性,该属性表示(可能)VC中的
UIImageView
。我猜您的代码在一个函数中,该函数由
viewDidLoad
(或类似函数)调用,或者它可能是一个按钮点击的目标


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

此代码包含在哪个类中?它指的是此代码所在的任何类。可能是视图控制器中的.viewDidLoad函数的副本。您的问题没有什么意义
self
是视图控制器的实例,正如您所述。就这样,没别的了
self。imageView
指的是视图控制器的
imageView
属性。可能有助于您阅读我在这里的解释:这里:那么“self”创建类的实例,并且本身就是类的实例?这就是我从你的linkNo那里得到的。Self不创建任何实例。Self只是指它所在的类的实例。如果该类没有实例,则包含
self
的代码将不会运行,因为没有实例。把
self
想象成每一个引用自身的类的属性。就像imageView在本例中是视图控制器的一个属性一样,当一个人说“我的名字是Fogmeister”时,就不会有另一个克隆人的实例。“我的”这个词指的是说这个词的人的例子。如果这有意义的话。很好,但我建议添加“函数()内部的任意深度”。我的观点是,如果function()调用
self.function2()
,function2()内部的
self
仍然是
obj
。即使函数或函数2是继承的,所有这些都是正确的。这就是为什么我把OP提到多态性的讨论。。。