Swift 에서 struct 와 class 의 차이

클래스 와 구조 체 의 공통점:
a, 속성 b, 방법 c, 아래 표 조작 d, 구조 기 e, 확장 f, 프로 토 콜
Structures and classes in Swift have many things in common. Both can:
  • Define properties to store values
  • Define methods to provide functionality
  • Define subscripts to provide access to their values using subscript syntax
  • Define initializers to set up their initial state
  • Be extended to expand their functionality beyond a default implementation
  • Conform to protocols to provide standard functionality of a certain kind

  • 클래스 와 구조 체 의 차이 점:
    a. 클래스 는 계승, 분석, 유형 전환, 인용 계수 b, 클래스 와 구조 체 가 메모리 에서 의 실현 체제 가 다르다. 클래스 는 더미 (hep) 에 저장 되 고 구조 체 는 스 택 (stack) 에 저장 되 며 c, 클래스 는 인용 유형 이 고 구조 체 는 값 유형 이다.
    Classes have additional capabilities that structures don’t have:
  • Inheritance enables one class to inherit the characteristics of another.
  • Type casting enables you to check and interpret the type of a class instance at runtime.
  • Deinitializers enable an instance of a class to free up any resources it has assigned.
  • Reference counting allows more than one reference to a class instance.

  • 선택 방법:
    a. 기본적으로 structures 를 사용 합 니 다.b. Objective - C 의 상호작용 성 이 필요 할 때 classes 를 사용 하 십시오.c. 모델 링 데 이 터 를 제어 할 표지 가 필요 할 때 classes 를 사용 하 십시오.d. 공 유 를 통 해 이 루어 지고 structures 와 협 의 를 사용 하여 행 위 를 사용 합 니 다.
    Consider the following recommendations to help choose which option makes sense when adding a new data type to your app.
  • Use structures by default.
  • Use classes when you need Objective-C interoperability.
  • Use classes when you need to control the identity of the data you're modeling.
  • Use structures along with protocols to adopt behavior by sharing implementations.
  • struct Student {
        //  MARK: -   
        var name: String
        var age: Int
        var classNum: String
        
        //  MARK: -   
        func descriptionStudent() {
            print("  :" + name + "   :" + "\(age)" + "    :" + classNum)
            // self.name = "alice"
        }
        
        mutating func modifyName(name: String){
            self.name = name
        }
    }
    
    var student1 = Student(name: "andy", age: 15, classNum: "0501")
    student1.descriptionStudent()
    
    //   :
    //   :Andy   :15    :0501
    //   :Bob   :15    :0501
    

    좋은 웹페이지 즐겨찾기