22
ReactiveCocoa,subscribeError:
方法與catch:
之間有什麼區別?你爲什麼想要返回catch:
的信號?catch:和subscribeError之間的區別:
ReactiveCocoa,subscribeError:
方法與catch:
之間有什麼區別?你爲什麼想要返回catch:
的信號?catch:和subscribeError之間的區別:
-subscribeError:
實際訂閱:這是行結束。而-catch:
只是將信號轉換爲新信號(並且實際上並未訂閱)。想像一個程序那樣的信號。當你-subscribeError:
,你告訴計算機「我想運行這個程序,但我只想聽到你的消息,如果它出錯。」當你在-catch:
的時候,你會說「我有這個程序可能會引發錯誤,我想根據舊的程序來創建一個不同的錯誤處理程序」。
您必須返回-catch:
中的信號的原因在於,它不僅僅是用於壓制錯誤:它實際上是用於響應錯誤。一旦原始信號發生錯誤,它就會消失:如果您希望得到的信號在發生故障後繼續運行,則必須在-catch:
中發出新信號。你可以在-catch:
做什麼
例子:
[RACSignal empty]
。[RACSignal error:err]
如果你想在做某事後重新拋出錯誤,或者你想改變錯誤。
很好的解釋。在'-catch:'內部啓動AlertView並返回一個空信號以「壓制」錯誤,這似乎是使用RAC進行錯誤處理的常用入口點,至少在我的經驗中如此。 –
@terrylewis然而,要小心線程。由於信號的值可以在任意線程上傳遞,因此''catch:'塊也可以在那裏運行。 –