본문 바로가기

Swift/The Swift Programming Language56

[Swift] Methods(메소드) - 1 Methods메소드는 특정 타입에 연관된 함수이다. 클래스, 스트럭처, 열거형은 인스턴스로 작업하기 위한 기능이나 작업은 캡슐화 하기 위해 인스턴스 메소드를 선언할 수 있고, 타입 그 자체에 연관된 타입 메소드도 선언할 수 있다. Instance Methods인스턴스 메소드는 특정 클래스, 스트럭처, 열거형에 속하는 함수이다. 인스턴스 프로퍼티에 접근, 수정하는 방법을 제공하거나 인스턴스의 목적에 맞는 기능을 제공하여 인스턴스가 기능을 가지게 한다. 인스턴스 메소드는 함수와 똑같은 구문을 사용한다. 인스턴스 메소드는 자신이 선언되어 있는 타입의 인스턴스 메소드나 타입에 암시적으로 접근 권한을 가지고 있다. 인스턴스 메소드는 자신이 선언되어 있는 타입의 인스턴스에서만 호출할 수 있으며, 밖에서 독립적으로 .. 2023. 6. 6.
[Swift] Properties(프로퍼티) - 3 Type Properties인스턴스 프로퍼티는 특정 타입의 인스턴스에 속하는 프로퍼티이다. 새로운 인스턴스를 만들때 마다, 인스턴스는 다른 인스턴스와 구분되는 프로퍼티 집합이 생긴다. 인스턴스가 아닌 타입 자체에 속하는 프로퍼티도 있다. 이러한 프로퍼티를 타입 프로퍼티라고 하며, 얼마나 많은 그 타입의 인스턴스를 생성했느냐에 관련없이 단 하나만 존재한다. 타입 프로퍼티는 특정 타입의 모든 인스턴스들이 보편적으로 사용할 값을 정의할 때 유용하다. (C의 static이랑 유사하다)Note타입 그 자체는 이니셜라이저가 없기 때문에, 인스턴스 프로퍼티와 다르게 타입 프로퍼티는 저장 프로퍼티일 때 반드시 디폴트 값을 줘야한다.저장 타입 프로퍼티는 처음 접근할 때 초기화되며, 여러 스레드가 동시에 접근하더라도 한번.. 2023. 6. 5.
[Swift] Properties(프로퍼티) - 2 Property Observers프로퍼티 옵저버(Property Observer)는 프로퍼티 값의 변화를 관측하고 반응한다. 프로퍼티 옵저버는 새로 설정된 값이 이전의 값과 같더라도, 프로퍼티의 값이 설정 될 때 마다 반응한다. 프로퍼티 옵저버는 다음의 위치들에 추가할 수 있다.직접 정의한 저장 프로퍼티상속받은 저장 프로퍼티상속받은 컴퓨티드 프로퍼티서브클래스에서 상속받은 프로퍼티를 오버라이드 하여 프로퍼티 옵저버를 추가할 수 있다. 직접 정의한 컴퓨티드 프로퍼티의 경우에는 setter를 사용하면 프로퍼티 옵저버를 사용하지 않고도 값의 변화를 관측하고 응답할 수 있다. 프로퍼티 옵저버는 두 종류가 있으며, 둘을 같이 쓸 수도 있고 하나만 쓸 수도 있다.willSet은 새로운 값이 저장되기 직전에 호출된다... 2023. 6. 2.
[Swift] Properties(프로퍼티) - 1 Properties프로퍼티는 특정 클래스, 스트럭처, 열거형에 값을 연관시킨다. 저장 프로퍼티는 변수나 상수의 값을 인스턴스의 일부로 저장하고, 컴퓨티드 프로퍼티는 값을 저장하기보다는 계산한다. 컴퓨티드 프로퍼티와 다르게, 저장 프로퍼티는 열거형에서 쓸 수 없다. 저장 프로퍼티와 컴퓨티드 프로퍼티는 인스턴스와 연결되는 반면, 다르게 타입 프로퍼티는 타입 그 자체에 연결된다. 추가로 프로퍼티 값의 변화를 모니터링 하고, 커스텀 액션으로 반응할 수 있는 프로퍼티 옵저버를 사용할 수도 있다. 프로퍼티 옵저버는 저장 프로퍼티에서 직접 정의하여 추가할 수 있으며, 서브클래스한태 상속된다. Stored Properties가장 간단한 형태의 저장 프로퍼티는 클래스나 스트럭처 인스턴스의 일부로 저장되어있는 변수 혹은 .. 2023. 6. 2.
[Swift] Structures and Classes(스트럭처와 클래스) - 2 Structures and Enumerations Are Value Types값 타입은 변수나 상수에 할당되거나 함수에 전달될 때, 값이 복사되는 타입이다. 스위프트의 정수, 실수, 부울, 문자열, 배열, 딕셔너리와 같은 기본 타입들은 모두 값 타입이고 실제로 스트럭처로 구현되어있다. 스위프트에서 모든 스트럭처와 열거형과 그 값 타입 프로퍼티들은 코드 안에서 복사되어 전달된다.Note배열, 딕셔너리, 문자열과 같은 콜렉션은 전달(혹은 할당)될 때, 즉시 복사되지 않고 수정 작업이 이루어졌을때 복사를 하는 최적화가 되어있다.let hd = Resolution(width: 1920, height: 1080)var cinema = hd이 예시는 앞선 예시에 나온 스트럭처 Resolution의 상수 인스턴스 h.. 2023. 6. 1.
[Swift] Structures and Classes(스트럭처와 클래스) - 1 Structures and Classes스트럭처와 클래스는 범용성 있는 유연한 구조이다. 상수, 변수, 함수를 작성하는 것 처럼 프로퍼티와 메소드를 작성하여 스트럭처와 클래스에 기능을 부여할 수 있다. Comparing Structures and Classes스트럭처와 클래스는 많은 공통점을 가지고 있다. 둘 다 다음과 행동을 할 수 있다.값을 저장하기 위한 프로퍼티 정의기능(functionality)을 위한 메소드 정의서브스크립트 구문을 통하여 값에 접근할 수 있게 하는 서브스크립트 정의초기 값을 설정하기 위한 이니셜라이저 정의기본 구현보다 확장된 기능을 위한 확장성특정 종류에 대한 표준 기능을 제공하는 프로토콜 준수클래스는 스트럭처가 없는 추가 기능들이 있다.상속을 통한 다른 클래스의 특성 상속타입 .. 2023. 6. 1.