五、多線程基礎網絡
線程間通訊
什麼叫線程間通訊
在一個進程中,線程每每不是孤立存在的,多個線程之間須要常常進行通訊
線程間通訊的體現
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秒鐘。
- 方法二
關於這個第三種方法,能夠看看個人總結,而後基本能夠達到不用看源碼快速本身敲出代碼: