我在视图控制器中有一个bool变量,当它的值从类文件更改时应该更新。
查看控制器:
var backgroundImageIsReady: Bool = true {
didSet {
if backgroundImageIsReady {
activityIndicator.stopAnimating()
println("is ready")
} else {
println("is not ready")
}
}
}
查看控制器函数调用(是的,我知道它很胖):
self.imageLoad.initial(self.imageResourcesArray,
container2: self.imageContainer2,
container3: self.imageContainer3,
ifUserIsNew: ifNewUser,
backgroundImageIsReady: &backgroundImageIsReady)
类函数定义:
class ImageLoad {
// MARK: Load initial 2 images
func initial(imageArray: [PFFile], container2: UIImageView, container3: UIImageView, ifUserIsNew: () -> (), inout backgroundImageIsReady: Bool ) {
backgroundImageIsReady = false // here
imageArray[0].getDataInBackgroundWithBlock{
(imageData: NSData!, error: NSError!) -> Void in
if error == nil {
let image = UIImage(data: imageData)
container3.image = image
container3.alpha = 0
backgroundImageIsReady = true // Here
UIView.animateWithDuration(0.5, animations: {
container3.alpha = 1
ifUserIsNew()
})
}
}
}
您可以在函数定义中看到,一旦调用它,它应该将viewImageIsReady从视图控制器设置为false,然后当image完成下载后,将其设置为true。 在这个例子中发生的是,变量确实设置为FALSE,设置为TRUE被忽略,println()将仅打印“未准备好”。 当我删除设置为false语句backgroundImageIsReady = false时,我看到打印“准备就绪”一次。这是一种我无法理解的不连贯的行为。变量观察者似乎只会在第一次更改时执行一次,然后忽略其他更改。