Ios 为什么初始化带有图像的UIImageView对象时返回nil?

Ios 为什么初始化带有图像的UIImageView对象时返回nil?,ios,swift,uiimageview,uiimage,Ios,Swift,Uiimageview,Uiimage,我初始化了一个对象并用UIImage设置它。我认为这会初始化一个有图片的对象,所以它应该显示在屏幕上,但当checkMark.isHidden=true时,它会返回nil 因此,我使用这种方法,只需将资产中的图像设置为checkMark.image。这是可行的,但我不知道这两者之间有什么区别 @IBOutlet weak var checkMark: UIImageView! override func viewDidLoad() { checkMark = UIImageView(im

我初始化了一个对象并用UIImage设置它。我认为这会初始化一个有图片的对象,所以它应该显示在屏幕上,但当
checkMark.isHidden=true
时,它会返回nil

因此,我使用这种方法,只需将资产中的图像设置为
checkMark.image
。这是可行的,但我不知道这两者之间有什么区别

@IBOutlet weak var checkMark: UIImageView!
override func viewDidLoad() {
    checkMark = UIImageView(image: UIImage?)
}

这似乎是一个出口,所以不要这样做

checkMark.image = #imageLiteral(resourceName: "answerCheckMark.png")

由于它将
弱var
的引用更改为未保留(
UIImageView(image:myImage)
)rhs,这将使其为零,因此您可以读取该行中显示的警告xcode,因此仅更改image属性

这没有任何意义:选中标记=UIImageView(image:UIImage?)这是您实际代码的样子吗?它甚至不应该编译…它确实可以编译,但仅仅因为我再次初始化了同一个对象,它就不能工作了?这可能是一个愚蠢的问题,但我是新来的,只是试着去理解它。正如Shu Khan在他的回答中所写的,你不应该创建一个新的UIImageView并将其分配给你的outlet,因为这是由故事板处理的。仅更改checkMark的image属性-将其设置为所需的UIImage。这意味着,我已使用出口初始化对象。所以我不应该重新初始化它,对吗?这很有道理。非常感谢你,现在我知道真正的区别了。感觉很好。
checkMark = UIImageView(image:myImage)