CLASS
[Swift] extension 키워드 이용해 타입 기능 확장하기
클래스 기반 모델의 문제점 클래스 기반 모델은 보통 protocol(interface)를 확장하는 방식으로 함수를 만들어낸다. 하지만, 문제는 하나의 클래스는 하나의 protocol만을 확장하지 않는 경우가 많다는 것이다. 특히 iOS의 ViewController의 경우는 여러 기능이 들어가야 하기 때문에 여러 protocol을 상속받는다. 하지만 여러 프로토콜을 상속받게되면 하나의 클래스에 여러 함수를 구현해야 되기 때문에 클래스가 복잡해진다. 예를 들어 사람 클래스에 커피샵 직원 프로토콜과 Programming을 위한 프로토콜을 상속한다고 해보자. 그러면 다음과 같이 Person class가 매우 커진다. class Person : CoffeeShopEmployee, Programming{ func ..
![[Swift] protocol이란 무엇인가?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXQoXo%2Fbtrozj2MHZF%2Fz6qPPKzfcJYQbfHqtNttk0%2Fimg.png)
[Swift] protocol이란 무엇인가?
protocol이란? protocol은 타입으로 Swift의 class나 struct의 행동(func)을 정의하는 역할을 한다. *Java, Kotlin, Dart, C#의 interface와 같은 역할을 한다. 보통 프로그래밍에서의 protocol(프로토콜)이라 함은 프로그램(컴퓨터) 간에 데이터를 교환 방식을 정의하는 규칙을 말한다. 즉, 프로토콜은 코드 구현이 없는 규칙일 뿐이다. 따라서 프로토콜을 사용하는 프로그램에서 프로토콜을 보고 구현을 한다. Swift에서도 마찬가지로 protocol은 행동을 정의하기만 할뿐 구현을 하지 않는다. protocol의 특징 protocol은 행동을 정의한다. protocol은 타입이다. protocol은 행동을 정의한다 예를 들어 Shop protocol이 있다..
![[Swift] Struct와 Class의 차이는 무엇인가?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB9Pmk%2FbtrosxmEJgM%2Fc6V6RbKmi4HaxPvep1cGs0%2Fimg.png)
[Swift] Struct와 Class의 차이는 무엇인가?
Struct와 Class의 차이 Struct와 Class는 데이터 저장 방식, 가변성(Mutability), 상속 측면에서 다르다. 첫 째, Struct는 그 자체로 값으로 저장이 되지만 Class는 변수에 객체에 대한 주소값을 저장한다. 둘 째, Struct는 기본적으로 Immutable하지만 Class는 Mutable하다. 때문에 Struct의 내부 변수값을 바꾸기 위해서는 mutating이라는 강제로 mutability를 부여하는 접두어를 붙여야 한다. 셋 째, Struct는 상속이 불가능하지만, Class는 상속이 가능하다. 이는 불변성의 연장선으로 볼 수 있다. 데이터 저장 방식 struct의 데이터는 그 자체가 값으로 저장이 된다. 따라서 기존 struct가 새로운 struct에 할당되면 기존..