我对这个非常简单的代码(我从项目中分离出来)的失败感到不知所措。
import UIKit
class ViewController: UIViewController {
weak var garageDoor: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
if let image = UIImage(named: "garagedoorclosed") {
print("image ready: \(image)")
garageDoor = UIImageView(image: image)
print("garageDoor: \(garageDoor)")
garageDoor.frame = CGRectMake(0, 0, 560, 400) // fails here!
view.addSubview(garageDoor)
}
else {
print("image not ready!")
}
}
}
我只想用名为garagedoorclosed
的图像初始化UIImageView。
我不知道为什么我没有使用garageDoor
初始化garageDoor = UIImageView(image: image)
。
我的截图如下:
感谢任何评论!
由于
答案 0 :(得分:1)
在viewDidLoad中只需替换下面的代码。
var garageDoor: UIImageView!
garageDoor = UIImageView(frame: CGRectMake(0, 0, 560, 400))
if let image = UIImage(named: "garagedoorclosed") {
garageDoor.image = image
}
self.view.addSubview(garageDoor)
答案 1 :(得分:1)
我编辑我的答案。主要问题是garageDoor
的声明,因为weak
表示变量不保留对象,它将被释放。您已移除weak
,garageDoor
将会很强大。
var garageDoor: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if let image = UIImage(named: "images2") {
print("image ready: \(image)")
garageDoor = UIImageView(image: image)
print("garageDoor: \(garageDoor)")
garageDoor.frame = CGRectMake(0, 0, 560, 400)
view.addSubview(garageDoor)
}
else {
print("image not ready!")
}
}
根据经验确定两个参考文献中的哪一个应该是弱的:
将保留周期中的对象视为父子关系。在这种关系中,父母应该对其孩子保持强烈的参考(即所有权),但孩子不应该保持强有力的参考 original link