2023年6月2日金曜日

NSObjectとは

  •  Objective-Cの基本的なルートクラスで、Swiftでも使用される。
  • 他のクラスが継承することで、多くのメソッドやプロパティを利用可能。
    • メモリの管理
    • オブジェクトの等価性の比較
    • クラス情報の取得
    • メソッドの動的な呼び出し
  • ObjectiveーCのプロトコルに準拠しており、相互運用性が向上する。
  • ObjectiveーC特定の機能やAPIを利用する必要がある場合に有効。

AnyObjectとは

  •  Swiftの型システムにおける、プロトコルの一つ。
  • 参照型であるクラスのインスタンスを表すための型。
    • 参照型(class):参照を介して共有
    • 値型(struct, enum):値そのものをコピーして扱う。
  • クラスのインスタンスをAnyObject型の変数やプロパティに代入できる。
  • どのクラスのインスタンスでも受け入れられる。
  • 値型には使用できない。
  • AnyObject型の変数やプロパティには任意のクラスのインスタンスを代入できるが、メソッドの呼び出しなど、クラスのインスタンス特有の操作はできない。

weak 修飾子について

プロパティにweak修飾子をつける理由
  • 循環参照(retain cycle)を避けるため
    • 循環参照とは?
      • メモリリークの一種でオブジェクト間の相互参照によって発生。
        • メモリリーク(Memory Leak)とは?
          • プログラムやアプリにおけるメモリの不適切な使用状態。
          • 不要なメモリの確保や解放漏れにより、メモリ使用量が増加し続ける状態。
      • 2つ以上のオブジェクトがお互いに強参照(strong reference)を持ち、相互に解放されなくなる状態を指す。
        • 強参照とは?
          • オブジェクトが他のオブジェクトを所有することを意味する。
          • 参照カウントが増加し、オブジェクトが解放されない限り、メモリ上に保持され続ける。
          • 強参照がデフォルト。
      • 循環参照が発生すると?
        • オブジェクトが互いに解放されなくなり、メモリの解放が行われない。
        • アプリのメモリ使用量が増加し続け、最終的にメモリリークが発生。
        • メモリリークが継続すると?
          • アプリのパフォーマンス低下やクラッシュの原因となる。
      • 循環参照は相互に強参照を持つ場合に発生する。
    • 弱参照(weak reference)とは?
      • 参照カウントを増加させず、参照先オブジェクトが解放されると、自動的にnilになり、循環参照を解消するのに役立つ。

flutterについて、学んだことなど

Swiftについて学んできたため、つい比較してしまいがちです。 SwiftUIと比較して、書いてみました。 似ているようで似ていない flutterには、SwiftUIにおける「View」という概念が、「Widget」と呼ばれるものになる SwiftUIのようにWidgetの中に...