Swift-9: 클래스 및 구조체(Classes and Structures) 보기 코드로 학습

2341 단어
하나의 단일 파일에서 하나의 클래스나 구조체를 정의하면 시스템은 자동으로 다른 코드를 위한 외부 인터페이스를 생성할 것이다.

유와 구조체의 공통점과 차이점

  • 클래스와 구조체의 공통점: 속성 정의는 저장 값 정의 방법에 사용되며 기능 정의 하위 동작을 제공하는 데 사용된다. 하위 문법을 통해 실례에 포함된 값 정의 구조기에 접근할 수 있다. 초기화 값을 생성하는 데 사용되고 확장을 통해 기본적으로 실현된 기능을 추가하여 프로토콜을 실현하여 특정한 표준 기능을 제공할 수 있다
  • 클래스는 다음과 같은 추가 기능도 있다. 계승은 한 클래스가 다른 클래스를 계승하는 특징 유형 전환을 허용하고 실행할 때 한 클래스의 실례를 검사하고 해석하는 유형 분석기는 한 클래스가 분배된 자원 인용 계수를 방출하고 한 클래스에 대한 여러 번 인용을 허용한다
  • 구조체는 항상 복제된 방식으로 코드에 전달되며 인용 계수를 사용하지 않습니다.
  • 새 클래스 또는 구조체 명명용 UpperCamelCase(Swift 유형의 명명 규범)
  • 속성과 방법명명용lowerCamelCase
  • struct Resolution {
        var width = 0
        var height = 0
    }
    class VideoMode {
        var resolution = Resolution()
        var interlaced = false
        var frameRate = 0.0
        var name: String?
    }
    

    클래스 및 구조체 인스턴스

  • 구조체와 클래스는 모두 구조기 문법으로 새로운 실례를 생성하는데 ()는 가장 간단한 구조기 문법이다.
  • let someResolution = Resolution()
    let someVideoMode = VideoMode()
    
  • 구조체의 구성원 하나하나 구조기
  • let hd = Resolution(width: 1920, height: 1080)
    
  • 구조체와 매거는 값 유형이다.모든 기본 형식: 정수 (Integer), 부동점수 (floating-point), 부울 값 (Boolean), 문자열 (string), 그룹 (array), 사전 (dictionary) 은 모두 값 형식이고, 밑바닥은 구조체의 형식으로 이루어진다.
  • var cinema = hd
    cinema.width = 2048
    print("hd is still \(hd.width) pixels wide")
    
  • 클래스는 인용 유형
  • let tenEighty = VideoMode()
    tenEighty.resolution = hd
    tenEighty.interlaced = true
    tenEighty.name = "1080i"
    tenEighty.frameRate = 25.0
    let alsoTenEighty = tenEighty
    alsoTenEighty.frameRate = 30.0
    tenEighty.frameRate
    //      :                    
    tenEighty === alsoTenEighty
    

    구조체를 선택하는 것이 좋습니다.

  • 이 데이터 구조의 주요 목적은 소량의 관련 간단한 데이터 값을 봉인하는 데 쓰인다.
  • 이 데이터 구조의 실례가 부여되거나 전달될 때 봉인된 데이터가 인용되지 않고 복사될 것으로 예상되는 이유가 있다.
  • 이 데이터 구조에 저장된 값 유형 속성도 인용되지 않고 복사되어야 한다.
  • 이 데이터 구조는 다른 기존 유형의 속성이나 행위를 계승할 필요가 없다.
  • struct Shape {
        var width: Double = 1.0
        var height: Double = 1.0
    }
    struct Path {
        var start: Int
        var length: Int
    }
    struct Point {
        var x: Double
        var y: Double
        var z: Double
    }
    

    Swift의 String, Array 및 Dictionary는 값 유형, OC의 NSString, NSArray 및 NSDictionary는 참조 유형
    playground 파일이 andyRon/LearnSwift에 있음

    좋은 웹페이지 즐겨찾기