property 학습하기 (1) [ Stored Property ]
·
프로그래밍언어/swift
swift에는 정말 여러개의 property들이 존재한다.이번 포스팅부터는 swift의 여러 property들의 종류와 특징을 정리하고 코드를 통해 학습한다. 프로퍼티란?Swift에서 프로퍼티(Properties)는 클래스, 구조체, 열거형과 같은 객체의 데이터를 저장하는 변수 또는 상수이다. Stored Property (저장 프로퍼티)값을 저장하는 프로퍼티 종류 인스턴스 저장 프로퍼티타입 저장 프로퍼티지연 저장 프로퍼티역할클래스와 구조체에서만 사용할 수 있고, 값을 저장하기 위해 선언되는 상수/변수타입 자체에 속하는 저장 프로퍼티프로퍼티가 호출되는순간에 초기화 되는 저장 프로퍼티lazy 동작 여부XOOlet(상수) 가능 여부OOX  예시 코드class Human { var name: String = ..
protocol 학습하기 (4) [ any, some ]
·
프로그래밍언어/swift
저번 포스팅에서 우리는 associatedtype을 통해 프로토콜안에서 범용 타입을 편하게 사용하는 방법을 학습했다. 이번 학습은 associatedtype을 사용할 때 발생하는 문제점과 해결방안을 알아보자. 문제점associatedtype이 정의된 protocol은 리턴 또는 변수 타입으로 사용될 수 없는 불편함이 있다. protocol SomeProtocol { associatedtype T : Equatable // 제약 조건 도 줄 수 있음}protocol SomeProtocol2 {}var prop: SomeProtocol // ❌ associatedtype가 정의되서 변수 타입으로 사용 불가func someFunc() -> SomeProtocol {} // ❌ associatedtype..
protocol 학습하기 (3) [ associatedtype ]
·
프로그래밍언어/swift
저번 포스팅에서 프로토콜의 generic, 합성, 채택 체크등 조금 더 확장된 개념을 학습했다.이번에는 저번 학습 주제 중 generic을 프로토콜에서 편하게 사용할 수 있는 associatedtype에 대해 학습해보자등장 배경프로토콜에서 generic 사용할 때 번거로움이 있다.왼쪽 사진과 같이 프로토콜 자체에 제네릭을 선언할 수 없고 만약 제네릭을 사용하고 싶으면  오른쪽 사진과 같이 타입이더라도  함수 하나하나 새로 명시를 해줘야한다. 역할프로토콜에 사용하는 범용 타입의 역할을 한다. 특징1) associatedtype 역시 제네릭과 마찬가지로 제약 조건을 줄 수 있다.    여기서 제약조건이란 프로토콜 채택과 클래스 상속 등을 의미한디. 2) 채택 할 때 typealias를 이용하여 명확한 타입을..
protocol 학습하기 (2) [ generic, 합성, 채택 체크 ]
·
프로그래밍언어/swift
프로토콜에 제네릭 및 제약조건 적용하기제네릭 (범용 타입)은 런타임 시 타입을 결정하게하여 함수 또는 변수에 상황에 맞는 타입을 사용할 수 있게하는 기능이다. 제네릭 역시 프로토콜에 적용 할 수 있으며, 프로토콜 타입을  재네릭으로 사용할 수 있다. 1) 프로토콜에 제네릭 사용하기 기본 제네릭 패턴 또는 where과 조합해서 쓸 수 있다.protocol SomeProtocol { func f1(param: T) // 단순 제네릭 이용 func f2(param: T) where T: Equatable // 제네릭 + where 이용 } 2) 제네릭에 프로토콜 타입으로 사용하기프로토콜 역시 제네릭 타입으로 사용할 수 있다.protocol SomeProtocol { ..
protocol 학습하기 (1) [ property, method, extension ]
·
프로그래밍언어/swift
protocol이란 ?프로토콜이란 반드시 구현해야하는 요구사항을 미리 정의하는 타입이다.class, struct, enum, 심지어 protocol도 또다른 protocol을 채택할 수 있다. 참고애플 공식문서 property 정의하기먼저 property를 정의할 때 protocol에서 어떤식으로 요구사항을 정의하는 지 알아보자 1) var로 시작해서 변수명과 타입을 지정한다. 2) 연산 프로퍼티를 이용하여 `get`과 `set`의 역할을 부여한다. 3) get set일 경우 let property와 getter only computed property는 사용할 수 없다. protocol SomeProtocol { var prop1: Int { get } // 읽기 전용 var prop..
생성자
·
프로그래밍언어/swift
기본 생성자를 제외하고도 많은 종류의 생성자가 있다는 걸이번 부트스 캠프를 통해 알게되었다.다양한 생성자의 역할과 특징을 알아보자. 1. Designated initializers첫 번째는 지정 생성자이다.  역할가장 기본적인 생성자이며 초기화 되지 않은 모든 프로퍼티를 초기화 해주는 역할을 한다. 특징 1) Delegate Up 서브 클래스의 Designated Initializer는 반드시 슈퍼 클래스의 Designated Initializer를 호출해야 합니다 2. convenience initializers두번째는 편의 생성자이다. 역할Designated init의 파라미터 중 일부를 기본값으로 설정해서, convenience init안에서 Designated init을 호출하는 보조 생성자 역할..