十一、調試操作-Debugging Operators(Rx.playground翻譯)

注意:使用本例中的代碼首先應該導入頭文件法精,代碼如下:

import RxSwift

Debugging Operators

該類操作幫助調試 Rx 代碼。

debug

打印出所有訂閱,事件和處理痴突。

example("debug") {
    let disposeBag = DisposeBag()
    var count = 1

    let sequenceThatErrors = Observable<String>.create { observer in
        observer.onNext("")
        observer.onNext("")
        observer.onNext("")

        if count < 5 {
            observer.onError(Error.Test)
            print("Error encountered")
            count += 1
        }

        observer.onNext("")
        observer.onNext("")
        observer.onNext("")
        observer.onCompleted()

        return NopDisposable.instance
    }

    sequenceThatErrors
        .retry(3)
        .debug()
        .subscribeNext { print($0) }
        .addDisposableTo(disposeBag)
}

Debug Area 輸出:
--- debug example ---
2016-06-28 17:40:52.902: playground19.swift:42 (__lldb_expr_19) -> subscribed
2016-06-28 17:40:52.904: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
2016-06-28 17:40:52.904: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
2016-06-28 17:40:52.905: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
Error encountered
2016-06-28 17:40:52.908: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
2016-06-28 17:40:52.908: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
2016-06-28 17:40:52.909: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
Error encountered
2016-06-28 17:40:52.911: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
2016-06-28 17:40:52.912: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
2016-06-28 17:40:52.912: playground19.swift:42 (__lldb_expr_19) -> Event Next(??)
??
Error encountered
2016-06-28 17:40:52.915: playground19.swift:42 (__lldb_expr_19) -> Event Error(Test)
2016-06-28 17:40:52.915: playground19.swift:42 (__lldb_expr_19) -> disposed


RxSwift.resourceCount

提供了所有Rx資源分配的計算量,它在開發(fā)過程中對于檢測泄漏是非常有用的搂蜓。

example("RxSwift.resourceCount") {
    print(RxSwift.resourceCount)
    
    let disposeBag = DisposeBag()
    
    print(RxSwift.resourceCount)
    
    let variable = Variable("??")
    
    let subscription1 = variable.asObservable().subscribeNext { print($0) }
    
    print(RxSwift.resourceCount)
    
    let subscription2 = variable.asObservable().subscribeNext { print($0) }
    
    print(RxSwift.resourceCount)
    
    subscription1.dispose()
    
    print(RxSwift.resourceCount)
    
    subscription2.dispose()
    
    print(RxSwift.resourceCount)
}
    
print(RxSwift.resourceCount)

Debug Area 輸出:
--- RxSwift.resourceCount example ---
0
1
??
3
??
4
3
2
0

RxSwift.resourceCount在默認情況下不啟用,通常不會啟用發(fā)布構建。下面是展示如何啟用它:

Follow these instructions to enable RxSwift.resourceCount in your project:

CocoaPods

  1. Add a post_install hook to your Podfile, e.g.:
target 'AppTarget' do
pod 'RxSwift'
end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == 'RxSwift'
            target.build_configurations.each do |config|
                if config.name == 'Debug'
                    config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['-D', 'TRACE_RESOURCES']
                end
            end
        end
    end
end
  1. Run pod update.
  2. Build project (ProductBuild).

Carthage

  1. Run carthage build --configuration Debug.
  2. Build project (ProductBuild).
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末辽装,一起剝皮案震驚了整個濱河市帮碰,隨后出現的幾起案子,更是在濱河造成了極大的恐慌拾积,老刑警劉巖殉挽,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丰涉,死亡現場離奇詭異,居然都是意外死亡斯碌,警方通過查閱死者的電腦和手機一死,發(fā)現死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傻唾,“玉大人投慈,你說我怎么就攤上這事」诮荆” “怎么了伪煤?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凛辣。 經常有香客問我抱既,道長,這世上最難降的妖魔是什么扁誓? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任防泵,我火速辦了婚禮,結果婚禮上跋理,老公的妹妹穿的比我還像新娘择克。我一直安慰自己,他們只是感情好前普,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布肚邢。 她就那樣靜靜地躺著,像睡著了一般拭卿。 火紅的嫁衣襯著肌膚如雪骡湖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天峻厚,我揣著相機與錄音响蕴,去河邊找鬼。 笑死惠桃,一個胖子當著我的面吹牛浦夷,可吹牛的內容都是我干的。 我是一名探鬼主播辜王,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劈狐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呐馆?” 一聲冷哼從身側響起肥缔,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汹来,沒想到半個月后续膳,有當地人在樹林里發(fā)現了一具尸體改艇,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年坟岔,在試婚紗的時候發(fā)現自己被綠了谒兄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炮车,死狀恐怖舵变,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情瘦穆,我是刑警寧澤纪隙,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站扛或,受9級特大地震影響绵咱,放射性物質發(fā)生泄漏。R本人自食惡果不足惜熙兔,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一悲伶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧住涉,春花似錦麸锉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至媳握,卻和暖如春碱屁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛾找。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工娩脾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人打毛。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓柿赊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親幻枉。 傳聞我的和親對象是個殘疾皇子碰声,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容