Just My Life & My Work

Posts tagged ‘thread’

[Xcode] 主線程檢查器 (Main Thread Checker)

我所使用的整合開發環境是Xcode,每年更新都會釋出新的功能,來幫助開發人如我者更有效率地工作!2018年Xcode即將邁入第10版,這裡我想要來介紹主線程檢查器 (Main Thread Checker)

回想2012年我還是個初學者的時候,還不知道主線程的重要性,以致於有時候發生不預期的反應,實在摸不著頭緒!基本上要記住,改變畫面的動作要在主線程實現,不然會發生什麼事?有時候有反應,有時候沒反應,這種狀況debug超級困難呢!

[Xcode] 主線程檢查器 (Main Thread Checker)1

好在Xcode已經能從語法分析來得知,哪些程式碼會跑到非主線程,若改變畫面的元件在非主線程操作,Xcode就會有紫色的提示。上圖表示Label一定要在主線程使用 ([UILabel text] must be used from main thread only)。

(繼續閱讀…)

廣告

[iOS] atomic和nonatomic

已經開發iOS App超過五年的我,在宣告Property Attributes一直以來都是用nonatomic,尚未使用到預設的atomic

@property (strong, nonatomic) UIWindow *window;

現在有個情況是有好幾個Thread有機會同時存取(setget)同一個Property,此時就有必要使用atomic。可是了解後發現,atomic不能保證我存取的值是正確的,到底是怎麼一回事呢?

Atomic vs. Non-Atomic Operations.png

(繼續閱讀…)

[iOS] 使用訊號 (Using Semaphore)

作業系統這門課學到的訊號 (Semaphore),總算可以派上用場!還是實作理論有感覺多了~iOS早已把它給實作出來,我們只要知道怎麼去用它就行了!

semaphore

(繼續閱讀…)

[iOS] 非同步下載影像

從網路下載影像,接著顯示在螢幕上,乍聽之下很簡單,卻隱含著許多「眉角」。基於影像容量以及網路速度考量,為了不讓UI卡住,我們勢必得把下載的工作放到非主線程上,在這裡我們叫它為非同步下載影像,一旦下載完畢,回到主線程顯示到螢幕上。

非同步下載影像

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: