2016-11-22 41 views
1

我有一個關於嵌套類和類的問題。我有一個正在處理JSON數據下載到設備上的UIView,並且我有一個顯示用戶進度的進度條。因爲我必須等待整個下載到纔去完成,我實現了一個輔助類,這樣我就可以使用尾隨關閉(found here從嵌套幫助程序類訪問ProgressView

任誰,這裏來了代碼:

在我viewDidLoad中

@IBOutlet weak var ProgressBar: UIProgressView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    ProgressBar.setProgress(0.10, animated: true) 

    updateCoreStack.needsCMS = true 
    updateCoreStack.needsSOC = true 
    updateCoreStack.needsDIN = true 
    updateCoreStack.progress = ProgressBar 
    updateCoreStack.beginUpdate{ completion in 
     //fires when all updates return! 
     print(completion) 
    } 

} 

而現在這裏的輔助類:

... 
let updateCoreStack = uCoreStack() 
class uCoreStack { 
    var progress:UIProgressView? = nil 

    var needsCMS = false 
    var needsDIN = false 
    var needsSOC = false 

    func beginUpdate(complete: @escaping (String)->()) { 
     ... 
     self.progress?.setProgress((self.progress?.progress)! + 0.05, animated: true) 
     ... 
    } 
} 

這可能是值得注意的是,beginUpdate可以被稱爲多比一次,即每次正常使用,beginUpdate可能會激活3次。 (如果連問題在所有...)

使用這種實現,我收到每EVERY進度變化以下錯誤:

2016年11月21日23:50:34.799607 DemoApp [779:241618 ]此應用程序正在從主線程訪問引擎後,從後臺線程修改自動佈局引擎。這可能會導致引擎損壞和奇怪的崩潰。

堆棧:(

0的CoreFoundation 0x000000018505c1d8 + 148

1 libobjc.A.dylib 0x0000000183a9455c objc_exception_throw + 56

2的CoreFoundation 0x000000018505c108 + 0

3基礎0x0000000185c40f0c + 192

4基金會0x0000000185c40c4c + 76

5基金會0x0000000185a8c5dc + 112

6基金會0x0000000185c3f8e8 + 112

7的UIKit 0x000000018aeb5ea0 + 244

8的UIKit 0x000000018aed9d78 + 660

9的UIKit 0x000000018aef0b84 + 108

10 UIKit 0x000000018b3cd7d8 + 276

11 DemoApp 0x0000000100122f70)

任何想法或建議嗎?先謝謝你。

凹凸...

+1

而不是傳遞ProgressView,傳遞函數來處理更改會更好嗎? – DevDevDevDev

回答