클래스 및 구조(Classes and Structures)

2248 단어
Swift는 사용자 정의 클래스와 구조를 위한 독립된 인터페이스를 만들고 파일을 실행하는 것을 요구하지 않습니다.하나의 파일에서 클래스나 구조체를 정의하면 시스템은 자동으로 다른 코드를 위한 외부 인터페이스를 생성합니다.
일반적으로 하나의 종류의 실례를 대상이라고 부른다.그러나 Swift에서 클래스와 구조체의 관계는 다른 언어보다 더욱 밀접하고 본 장에서 논의한 대부분의 기능은 클래스와 구조체에 사용될 수 있다.따라서 우리는 대상이 아닌 실례를 주로 사용한다.

클래스와 구조체 비교


Swift에는 클래스와 구조체의 공통점이 많다.공통점:
  • 스토리지 값에 대한 속성 정의
  • 기능 제공을 위한 정의 방법
  • 액세스 값에 대한 부속 스크립트 정의
  • 정의 구조기는 초기화 값을 생성하는 데 사용
  • 확장을 통해 기본 기능 추가
  • 특정 표준 기능을 제공하기 위한 프로토콜 구현
  • 클래스는 구조체에 비해 다음과 같은 추가 기능을 제공합니다.
  • 계승은 한 클래스가 다른 클래스의 특징을 계승하는 것을 허용한다
  • 유형 변환은 실행할 때 하나의 종류의 실례를 검사하고 해석할 수 있도록 허용한다
  • 해체기는 클래스 실례로 분배된 자원을 방출할 수 있도록 한다
  • 인용 계수는 한 종류에 대한 여러 번 인용을 허용한다
  • 정의 문법
    class SomeClass { 
    // class definition goes here
    }
    struct SomeStructure { 
    // structure definition goes here
    }
    
     UpperCamelCase ( SomeClass SomeStructure ),  Swift  ( String,Int Bool)。
    
     lowerCamelCase ( framerate incrementCount), 。
    

    구조체와 매거는 값 유형이다


    값 형식이 변수, 상수, 또는 함수에 부여될 때, 그 값은 복사됩니다.
    우리는 이미 값 유형을 대량으로 사용했다.실제로 Swift에서 모든 기본 유형은 정수(Integer), 부동점수(floating-point), 부울값(Boolean), 문자열(string), 수조(array)와 사전(dictionary)이다. 모두 값 유형이고 밑바닥은 구조체의 형태로 이루어진다.
    Swift에서는 모든 구조체 및 열거 유형이 값 유형입니다.이것은 그것들의 실례와 실례에 포함된 모든 값 유형의 속성이 코드에서 전달될 때 복제된다는 것을 의미한다.

    클래스는 참조 유형


    값 형식과 달리 인용 형식은 변수, 상수, 함수에 부여되거나 전달될 때 그 값은 복사되지 않습니다.따라서 이미 존재하는 실례 자체를 인용하는 것이지 복사하는 것이 아니다.

    항등연산자


    클래스는 인용 유형이기 때문에 여러 개의 상수와 변수가 막후에서 같은 클래스의 실례를 동시에 인용할 수 있다.
    만약 두 상수나 변수가 같은 종류의 실례를 인용하는지 아닌지를 판정할 수 있다면 매우 도움이 될 것이다.이 목적을 달성하기 위해 Swift에는 두 개의 항등연산자가 만들어졌습니다.
  • 는 (===)와 같다
  • 이 두 연산자를 이용하여 두 상수나 변수가 같은 실례를 인용하는지 검사한다.
  • 포인터


    어떤 인용 형식의 실례를 인용하는 Swift 상수나 변수는 C 언어의 바늘과 유사하지만, 메모리 주소를 직접 가리키지 않으며, 별표 (*) 를 사용해서 인용을 만들도록 요구하지 않습니다.Swift의 이러한 참조는 다른 상수 또는 변수의 정의와 동일합니다.
    문자열(String), 배열(Array), 사전(Dictionary) 유형의 값 지정 및 복사 동작
    Swift에서 많은 기본 유형, 예를 들어 String, Array와 Dictionary 유형은 모두 구조체의 형식으로 실현된다.이것은 새로운 상수나 변수에 값을 부여받거나 함수나 방법에 전달될 때 값을 복사한다는 것을 의미한다.
    Objective-C에서 NSString, NSArray와 NSDictionary 유형은 구조체가 아닌 클래스로 이루어진다.그것들은 값을 부여받거나 함수나 방법에 전달될 때 값 복사가 일어나지 않고 기존 실례의 인용을 전달한다.

    좋은 웹페이지 즐겨찾기