我是swift和iOS開發人員的新手,但對編程並不陌生。我正在構建一個小型秒錶應用程序作爲我的第一個演示項目。它是內置iOS8秒錶應用程序的一個克隆,有一些小的變化,但大部分完全一樣。UILabel文本使用NSTimer進行更新,但不能在觸摸/拖動時進行UITableView(gif示例)
我幾乎完成了應用程序,我注意到UILabels正在更新的問題。它們完美地工作,但當用戶單擊並拖動定時器下方的表格視圖時,它們不會更新。計時器保持正常運行,但時間不會更新到UILabels。它只有在用戶放開UITableView時纔會再次更新。
這裏是我記錄
有誰知道爲什麼發生這種情況的例子嗎?或者如何防止它?在這裏的帖子NSTimer gets disturbed while scrolling the UITableView in iphone看來問題是NSTimer正在主線程上運行,這是所有UI渲染髮生的地方。
我想我應該在另一個線程上運行NSTimer。或者也許在另一個線程上的UITableView。我將如何在Swift中將它們作爲單獨的線程運行?這篇文章NSTimer not working while dragging a UITableView似乎很好地解釋了Objective-C。它實際上解釋說,並不是NSTimer需要在另一個線程上運行,而是需要將它配置爲在所有常見模式下運行。有誰知道這可以在Swift中實現嗎?或者如果這是這種情況下的正確答案?