我有一個關於嵌套類和類的問題。我有一個正在處理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)
任何想法或建議嗎?先謝謝你。
凹凸...
而不是傳遞ProgressView,傳遞函數來處理更改會更好嗎? – DevDevDevDev