iOSアプリケーション開発者のデビュープロセス-11


🧷 Extension
列挙、クラス、構造体などのオブジェクトを展開して、新しい機能を追加できます.
既存の機能を追加すると、クラス継承によって完全に実現できます.なぜExtensionを使用しますか?
  • 継承はクラスタイプにのみ適用されますが、エクスポートは構造、クラス、プロトコルに適用されます.
  • 外部からインポートしたタイプに必要な機能を追加する場合は、継承せずにエクスポート追加機能を使用できます.
  • 즉, 클래스의 상속과 달리 타입에 상관없이 그리고 타입을 구현한 소스코드를 몰라도 간단하게 타입의 기능을 확장할 수 있습니다!Extensionを利用すれば、私たちが望む機能を簡単に追加することができます.
    拡張の性質をさらに理解するために、簡単な例を見てみましょう.
  • Extensionオブジェクトとして存在するクラスまたは構造ではなく、他のオブジェクトの拡張のみを担当します.
  • Extensionは、タイプに新しい機能を追加できますが、既存の機能を再定義することはできません.(상속과 차이점)
  • Extension|演算子、メソッド、および頭文字Riserを追加できます.(❗️ 저장 프로퍼티는 추가할 수 없습니다.)
  • 簡単な例を見てみましょう.
    import Foundation
    import UIKit
    
    extension UIViewController {
        
        //ViewController 에서 바로 사용할 수 있음!!
        func setBackgroundColor() {
            view.backgroundColor = .red
        }
        
        func justforTest() -> (Void) {
            print("Hello This is Extension Test!")
        }
        
        var testForExtension: Int {
            get {
                return 10
            }
        }
        
    }
    class ViewController: UIViewController {
      override func viewDidLoad() {
              super.viewDidLoad()
              justforTest() // Hello This is Extension Test!
              print(testForExtension)// 10
          }
    }
    上記のように、UIViewControllerクラスにメソッドと演算プログラムを拡張して追加します.
    このクラスを継承する他のクラスで、追加した機能が使用可能かどうかを確認できます.
    🚶 Singleton Pattern
    作成者が複数回呼び出されても、実際に生成されたオブジェクトは1つしかありません.最初に作成された後に呼び出された作成者は、最初に作成されたオブジェクトを返します.このデザインのタイプを単輪図案と呼びます.-위키피디아用途に応じて、共通のオブジェクトを生成するのは1つだけです.
    簡単な例を考えてみましょう.
    class DeliveryInfo {
        
        static let shared = DeliveryInfo()
        
        var menu: String?
        var additionalMenu: String?
        var address: String?
        
    }
    アプリケーションがビューA -> B -> C順にメニューを設定したり、他のメニューを設定したり、アドレスを入力したりしている場合.
    A, B, C Viewcontrollerに各DeliveryInfoのインスタンスが作成された場合、各インスタンスには1つの情報しか格納されません.
    1つのインスタンスで格納できますが、3つのインスタンスが使用されているため、メモリの損失になります.
    では、グローバルインスタンスを作成し、A -> B -> C間をループして各情報を保存するとどうなるのでしょうか.
    この設計をsingleton patternと呼ぶ.
    該当するブログを参照してください.
    🏷 P.S.UITableView Automatic Dimensionを適用してみますが、セルの高さは増加しません...
    レイアウト設定が間違っているのか、それとも何か見逃しているのか、ゆっくりチェックすべきだと思います.ううう