swift3.0-구조 함수

2395 단어

구조 함수의 소개


작용: 실례 대상의 내용을 초기화하려면 Swift 요구 클래스나 구조체의 저장 속성(lazy가 아닌)이 있어야 한다. 대상 구조가 끝난 후에 초기화 값 문법이 있어야 한다. init(파라미터 목록) {초기화 코드} 주의: 1.Swift의 클래스/패브릭/열거에는 구성 방법이 필요합니다. 2.구조 방법의 역할은 단지 속성을 초기화하는 데 쓰이는 것이지 내용을 분배하는 데 쓰이는 것이 아니다. 메모리를 분배하는 것은 시스템이 우리를 도와준 것이다.구조 방법은 스텔스 호출입니다. 클래스 이름 () 형식으로 대상을 만들면 스텔스 호출 init () 구조 방법 4.만약 모든 저장 속성에 기본값이 있다면 구조 방법을 제공하지 않을 수 있으며 시스템은 은밀한 구조 방법을 제공할 것이다.만약에 저장 속성이 절약을 제공할 수 있다면 모두가 절약 값을 설정하는 방식을 사용하는 것을 권장한다. 이렇게 하면 코드를 간소화할 수 있다(사용자 정의 구조 방법을 사용하지 않고 저장 속성 유형을 쓰지 않는다)
  • 구조 함수는 OC의 초기화 방법과 유사하다. init 방법
  • 기본적으로 다운로드하여 클래스를 만들 때 구조 함수
  • 를 호출합니다
  • 어떤 구조 함수도 작성하지 않아도 컴파일러는 기본적인 구조 함수를 제공합니다.
  • NSObject에서 상속된 경우 부류의 구조 함수를 다시 쓸 수 있음
  • 구조 함수의 소개

  • 류의 속성은 반드시 값이 있어야 한다
  • 정의할 때 초기화 값이 아니면 구조 함수에 값을 부여할 수 있음
  • class Person: NSObject {
        var name : String
        var age : Int
    
        //  NSObject( ) 
        override init() {
            name = ""
            age = 0
        }
    }
    
    //  Person 
    let p = Person()
    

    1 초기화 시 속성 값 부여
  • 우리가 대상을 만들 때 속성에 값을 부여하는 경우가 많다
  • 사용자 정의 구조 함수
  • 구조 함수를 사용자 정의하면 init () 방법을 덮어씁니다.기본 구조 함수가 없습니다
  • class Person: NSObject {
        var name : String
        var age : Int
    
        //  , init() 
        init(name : String, age : Int) {
            self.name = name
            self.age = age
        }
    }
    
    //  Person 
    let p = Person(name: "zhangsan", age: 18)
    

    (1) 사전 회전 모형(초기화 시 사전 전송)
  • 실제 창설 대상은 사전을 모델로 바꾸는 경우가 많다
  • 사전에서 꺼낸 것은 NSObject, 임의의 종류입니다.
  • as 통과 가능!필요한 유형으로 전환, 재할당(직접 할당 불가)
  • class Person: NSObject {
        var name : String
        var age : Int
    
        //  , init() 
        init(dict : [String : NSObject]) {
            name = dict["name"] as! String
            age = dict["age"] as! Int
        }
    }
    
    //  Person 
    let dict = ["name" : "zahngsan", "age" : 18]
    let p = Person(dict: dict)
    

    (2) 사전 회전 모형(KVC로 전환)
    KVC는 모든 속성에 값을 부여할 수 없습니다. 따라서 속성은 기본값이 있어야 합니다. 기본 데이터 형식의 기본값은 0이고, 대상이나 구조체 형식은 선택할 수 있는 형식으로 정의하면 됩니다. (선택할 수 있는 형식은 값을 부여하기 전nil)
    class Person: NSObject {
        //  , . 
        var name : String?
        
        //  , KVC 
        var age : Int = 0
        
        //  , init() 
        init(dict : [String : NSObject]) {
            //  
            super.init()
            
            //  KVC 
            setValuesForKeys(dict)
        }
    }
    

    좋은 웹페이지 즐겨찾기