簡體   English   中英

如何有效地對AppKit進行獨立處理?

[英]How to effectively do independent processes to the AppKit?

有人告訴我,“ AppKit控件不善於從主線程以外的其他線程進行更新。”

我有2個流程:

- update variables in the heap periodically
- display values from the heap to the display

我確實做了:

NSThread *thread_Client = [[NSThread alloc] initWithTarget:self selector:@selector(myTcpClient) object:nil];
NSThread *thread_Display = [[NSThread alloc] initWithTarget:self selector:@selector(displayData) object:nil];

但過一會兒它會消失或鎖定。

有什么更好的方法?

謝謝

對於您要做什么我還是不太清楚。 聽起來您正在嘗試在后台線程中執行循環操作,並且(在每個周期結束時)使用結果來更新UI。 其他帖子建議在主線程中使用NSTimer(這是用於更新UI的唯一線程)。 您會經常(反復)觸發計時器; 在觸發時調用的回調中,您需要將后台線程正在更新的對象中的所有數據/信息復制到適當的UI視圖中,然后調用setNeedsDisplay來引起UI的更新。 問題是您使用的信息的一致性:如果后台線程繼續更新對象,則可以將新舊信息混合復制到UI中。 也許您需要一個“交付”對象,背景將填充該對象,然后傳遞給UI更新程序; 這樣的對象將包含在后台循環結束時產生的一致信息集。

無論如何,您都不希望在主線程中睡眠。 它所做的只是降低UI響應速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM