[RxSWIFT]-CocoaとRxCocoa


Cocoaとは?


Cocoaは、オペレーティングシステムX、iPhone、iPad、iPod Touchを含むオペレーティングシステムオペレーティングシステムiOSのアプリケーション環境です.
(ここで、OS XはMacオペレーティングシステムの10番目のオペレーティングシステムであり、現在(2022)の基準ではMacOSである.)
Cocoa
  • オブジェクト向けソフトウェアライブラリ
  • ランタイムシステム
  • 統合開発環境
  • 設定します.
    Cocoaは、OS XおよびiOS上で実行されるアプリケーション(アプリケーション)にランタイムシステムを提供するオブジェクト向けのフレームワークです.
    OS Xは最も優れたシステムであり、iOSは唯一のアプリケーション環境です.
    MailやSafariなどのアップルエコシステムでは、ほとんどのアプリケーションがCocoaアプリケーションです.
    統合開発環境Xcodeは、OS XとiOSの2つのプラットフォームの開発をサポートします.
    XcodeとCocoaを組み合わせることで、アプリケーションを簡単に作成できます.

    Cocoaの2つの側面


    Cocoaは運転時面と開発面を提供している.

    1)運転時側


    Cocoアプリケーションは、ユーザーインタフェースを提供し、オペレーティングシステム内の他のビジュアルコンポーネントと緊密に統合されています.

    2)開発面


    Cocoaはオブジェクト向けのソフトウェアコンポーネント(クラス)の統合製品であり、オペレーティングシステムXとiOSのアプリケーションを迅速かつ強力にすることができます.
    これは、再利用およびアプリケーション(適応可能)可能なソフトウェア構築ブロックです.必要に応じて拡張または継続できます.
    Cocoaクラスは,ユーザインタフェースからデータフォーマットまでのほとんどの開発部分に存在する.

    - How Cocoa Fits into iOS


  • Coreオペレーティングシステム:カーネル、ファイルシステム、ネットワークインフラストラクチャ、セキュリティ、電源管理、および複数のデバイスドライバ.
  • コアサービス:この階層フレームワークは、文字列操作、コレクション管理、ネットワーク、URLユーティリティ、連絡先管理、プリファレンスなどの重要なサービスを提供します.また、GPS、コンパス、加速度計などの装置ハードウェアの機能も提供します.
  • CoreSerivce層フレームワーク:
  • CorePosition、CoreMobile、システム構成、インフラストラクチャ、およびCoreインフラストラクチャを含む
  • さらに、Coreインフラストラクチャには、Coreデータフレームワークも含まれています.
  • メディア:この層のフレームワークとサービスはコアサービス層に依存し、Cocoa Touch層にグラフィックスカードとマルチメディアサービスを提供する.
  • メディア層フレームワーク:
  • 、Coreグラフィックス、Coreテキスト、OpenGL ES、Coreアニメーション、AVFベース、Core Audioを含む
  • Cocoa Touch:iOSベースのアプリケーションを直接サポートします.
  • Cocoa Touch層フレーム:MapKit、GameKit等
  • iOSのコアフレームワーク

  • UIKE:アプリケーションがユーザーインタフェースに表示するオブジェクトを提供します.
  • ベース:オブジェクトのデフォルト動作を定義し、管理メカニズムを設定し、基本データ型、収集、オペレーティングシステムサービスを提供するオブジェクト.
  • ソース-APpledeveloer document Cocoa

    RxCocoaとは?


    CocoaフレームワークはiOSの開発に必要なフレームワークであり、Rxの使用を容易にするためにRxに囲まれている.
    既存のCocoaフレームワークのアクティブライブラリの利点を提供するため、RxSWIFTとRxReplayに依存します.
    Rxcocaが使用する概念は以下のとおりである.
  • Binder
  • Traits
  • Rx extension
  • 明かりがついています.

    1. Binder<Value'>


    :一方向データストリーム
    値の作成者(観察可能)と値の受信者(binder).
    作成者->受信者(0)
    作成者<-受信者(x)
    =>作成者は値を渡すことができますが、受信者は値を渡すことができません.

    -Binderの特性

  • トランシーバ(受信のみ)
  • UIバインド用
  • Errorイベントを受信しない
  • Errorイベントが受信されると、バインディングがUIバインディングに使用されるため、エラーが受信されるとUIが正常に動作しないように見えるため、シーケンスが自動的に終了することが観察されます.
  • Main Threadで動作していることを確認
  • Bindingが成功した場合、UIはプライマリ・スレッド上でのみ実行できるため、更新する必要があります.
  • 2. Traits


    Driver
    Signal

    -Trait(Driver,signal)を表す機能

  • Errorを放出しない観測可能な測定
  • onNext:Driver->ドライブ()、信号->emit()
  • Main Threadで
  • を実行
  • ストリーム共有
  • バインディングでは、1人のオブザーバを追加するたびにストリームも増加し、リソースが浪費される可能性があるが、信号は、新しいストリームを作成するのではなく、オブザーバが増加するときにストリームを共有し、リソースの浪費を低減することができる.
  • Driver:購読時に初期値を提供し、最新値
  • Signer:サブスクリプション後の値のみ提供
  • 3. Rx extension


    rxでプロパティを使用する場合は、そのプロパティ(ない場合)を使用します.
    extension Reactive where Base: T {
    
    }
    たとえば、rxでsizeToFitを使用する場合は、
    extension Reactive where Base: UIView {
    	var sizeToFit: Binder<Void> {
        	return Binder(base) { base, _ in
            	base.sizeToFit()
            }
        }
    }
    拡張子の作成:
    button.rx.sizeToFit()
    このように使うことができます