Swift:inOut变量和变量观察者不更新

时间:2015-02-23 14:04:35

标签: ios swift

我在视图控制器中有一个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时,我看到打印“准备就绪”一次。这是一种我无法理解的不连贯的行为。变量观察者似乎只会在第一次更改时执行一次,然后忽略其他更改。

0 个答案:

没有答案