10. Swift의 클래스 사용

4121 단어
주요 내용
  • 류의 소개와 정의
  • 류의 속성
  • 류의 구조 함수
  • 하나.클래스 소개 및 정의
  • Swift도 대상에게 일방적으로 개발된 언어
  • 대상을 대상으로 하는 기초는 클래스이고 클래스가 대상을 만들었다
  • Swift에서 클래스는 어떻게 정의합니까?
  • class는 Swift의 키워드로 클래스를 정의하는 데 사용됩니다
  • class    : SuperClass {
        //        
    }
    
  • 참고:
  • 정의된 클래스는 부류가 없을 수 있습니다.그러면 이 클래스는 루트클래스
  • 입니다.
  • 일반적인 상황에서 클래스를 정의할 때.NSObject(OC 이외의 NSObject)
  • 에서 상속

    둘.클래스의 속성을 정의하는 방법
    클래스 속성 소개
  • Swift에서 클래스의 속성은 여러 가지가 있습니다.
  • 저장 속성: 저장 실례의 상수와 변수
  • 계산 속성: 어떤 방식으로 계산된 속성
  • 클래스 속성: 전체 클래스 자체와 관련된 속성

  • 스토리지 속성
  • 저장 속성은 가장 간단한 속성으로 클래스 실례의 일부로서 상량과 변수를 저장하는 데 사용된다
  • 스토리지 속성에 기본값을 지정하거나 초기화 방법에서 초기화할 수 있음
  • 스토리지 속성에 대한 쓰기
  • age와name는 모두 저장 속성으로 이 학생의 나이와 이름을 기록하는 데 쓰인다
  • chineseScore와mathScore도 저장 속성으로 이 학생의 국어 점수와 수학 점수를 기록하는 데 쓰인다
  • class Student : NSObject {
        //     
        //     
        var age : Int = 0
        var name : String?
    
        var chineseScore : Double = 0.0
        var mathScore : Double = 0.0
    }
    
    //       
    let stu = Student()
    
    //        
    stu.age = 10
    stu.name = "why"
    
    stu.chineseScore = 89.0
    stu.mathScore = 98.0
    

    계산 속성
  • 계산 속성은 실제 값을 저장하지 않고 Getter와 선택할 수 있는setter를 제공하여 간접적으로 다른 속성을 가져오고 설정합니다
  • 계산 속성 은 Getter 방법만 제공
  • Getter만 제공하고setter를 제공하지 않으면 이 계산 속성은 읽기 전용 속성이며 Get{}
  • 을 생략할 수 있습니다
  • 다음은 속성을 계산하는 문법입니다.
  • averageScore는 계산 속성으로chineseScore와 mathScore를 통해 계산된 속성
  • setter 방법에 newValue 변수가 있는데 시스템이 지정한 분배
  • class Student : NSObject {
        //     
        //     
        var age : Int = 0
        var name : String?
    
        var chineseScore : Double = 0.0
        var mathScore : Double = 0.0
    
        //     
        var averageScore : Double {
            get {
                return (chineseScore + mathScore) / 2
            }
    
            //     ,                
            // newValue         ,       
            set {
                self.averageScore = newValue
            }
        }
    }
    
    //         
    print(stu.averageScore)
    

    클래스 속성
  • 클래스 속성은 클래스와 관련된 것이지 클래스의 실례와 관련된 것이 아니다
  • 모든 클래스와 실례는 하나의 클래스 속성을 가지고 있다.따라서 어느 한 곳에서 수정하면 이 종류의 속성이 수정됩니다
  • 클래스 속성의 설정과 수정은 클래스를 통해 이루어져야 한다
  • 다음은 클래스 속성의 쓰기 방법입니다.
  • 클래스 속성은static로 수식
  • courseCount는 클래스 속성으로 학생들이 몇 개의 과정을 가지고 있는지 기록하는 데 사용된다
  • class Student : NSObject {
        //     
        //     
        var age : Int = 0
        var name : String?
    
        var chineseScore : Double = 0.0
        var mathScore : Double = 0.0
    
        //     
        var averageScore : Double {
            get {
                return (chineseScore + mathScore) / 2
            }
    
            //     .newValue         ,       
            set {
                self.averageScore = newValue
            }
        }
    
        //    
        static var corseCount : Int = 0
    }
    
    //        
    Student.corseCount = 3
    //        
    print(Student.corseCount)
    
    

    속성 변경 내용 수신
  • OC에서 우리는 set 방법을 다시 써서 속성의 변화를 감청할 수 있다
  • Swift에서 속성 관찰자를 통해 속성 값의 변화를 감청하고 응답할 수 있음
  • 는 일반적으로 저장 속성과 클래스 속성의 변화를 감청한다.(계산 속성에 대해 우리는 속성 관찰자를 정의할 필요가 없다. 왜냐하면 우리는 계산 속성의setter에서 이러한 값의 변화를 직접 관찰하고 응답할 수 있기 때문이다)
  • 우리는 아래의 관찰 방법을 설정하여 관찰자를 정의한다
  • willSet: 속성 값이 저장되기 전에 설정합니다.새 속성 값이 상수 매개변수로 전달됩니다.이 매개변수 이름은 기본적으로 newValue이며 직접 정의할 수 있습니다
  • .
  • didSet: 새 속성 값이 저장된 후 바로 호출됩니다.윌셋과 같습니다. 이 때 들어오는 것은 속성의 옛 값입니다. 기본 매개 변수는oldValue
  • 입니다.
  • willSet과didSet은 속성이 처음 설정되었을 때만 호출되며 초기화할 때 이러한 감청 방법을 호출하지 않습니다
  • 수신 방법은 다음과 같습니다.
  • age와name의 변화를 감청
  • class Person : NSObject {
        var name : String? {
            //    newValue     
            willSet (new){ //       ,           
                //                newValue,      
                print(name)
                print(new)
            }
            //    oldValue     
            didSet (old) { //         ,      
                //                oldValue,      
                print(name)
                print(old)
            }
        }
        var age : Int = 0
        var height : Double = 0.0
    }
    
    let p : Person = Person()
    
    //     ,        
    //  OC      set  
    //  swift ,          
    p.name = "why"
    
    //p.name = "yz"
    

    좋은 웹페이지 즐겨찾기