多線程基礎(五)NSThread線程通訊

 

五、多線程基礎網絡

線程間通訊

 
什麼叫線程間通訊
在一個進程中,線程每每不是孤立存在的,多個線程之間須要常常進行通訊
 
線程間通訊的體現
1個線程傳遞數據給另外一個線程
在1個線程中執行完特定任務後,
 
  • 線程間通訊的體現
  • 1個線程傳遞數據給另1個線程
  • 1個線程中執行完特定任務後,轉到另1個線程繼續執行任務
 
線程間通訊經常使用方法  perform執行 selector選擇器 
- ( void ) performSelectorOnMainThread :( SEL ) aSelector withObject :( id ) arg waitUntilDone :( BOOL )wait;
- ( void ) performSelector :( SEL ) aSelector onThread :( NSThread *) thr withObject :( id ) arg waitUntilDone :( BOOL )wait;
上面兩個方法是對象方法,繼承NSObject的對象都能使用。
 
代碼(以加載網絡上的圖片爲例)

這裏先給一個網絡圖片下載的地址,蠻高清的圖片哦:
在敲代碼以前,要在info.plist項目文件中添加一個設置
由於自從XCode 7.0以後,從網絡加載就須要本身手動在info.plist文件中添加設置App Transport Security Settings這個選項
 
 
不使用多線程的操做
下面咱們須要採用一些方法來獲取一段代碼的執行獲取的時間
  • 第一種方法
 
 
  • 第二種方法
 
 
 
而後切入正題,在子線程中發送消息給主線程,也是兩種方法:
  • 方法一
 
 
注意上面的代碼用了NSThread的sleep方法,讓其睡眠3秒鐘。
  • 方法二
關於這個第三種方法,能夠看看個人總結,而後基本能夠達到不用看源碼快速本身敲出代碼:
 
相關文章
相關標籤/搜索