struct

    [Swift] extension 키워드 이용해 타입 기능 확장하기

    클래스 기반 모델의 문제점 클래스 기반 모델은 보통 protocol(interface)를 확장하는 방식으로 함수를 만들어낸다. 하지만, 문제는 하나의 클래스는 하나의 protocol만을 확장하지 않는 경우가 많다는 것이다. 특히 iOS의 ViewController의 경우는 여러 기능이 들어가야 하기 때문에 여러 protocol을 상속받는다. 하지만 여러 프로토콜을 상속받게되면 하나의 클래스에 여러 함수를 구현해야 되기 때문에 클래스가 복잡해진다. 예를 들어 사람 클래스에 커피샵 직원 프로토콜과 Programming을 위한 프로토콜을 상속한다고 해보자. 그러면 다음과 같이 Person class가 매우 커진다. class Person : CoffeeShopEmployee, Programming{ func ..

    [Swift] protocol이란 무엇인가?

    [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의 차이는 무엇인가?

    [Swift] Struct와 Class의 차이는 무엇인가?

    Struct와 Class의 차이 Struct와 Class는 데이터 저장 방식, 가변성(Mutability), 상속 측면에서 다르다. 첫 째, Struct는 그 자체로 값으로 저장이 되지만 Class는 변수에 객체에 대한 주소값을 저장한다. 둘 째, Struct는 기본적으로 Immutable하지만 Class는 Mutable하다. 때문에 Struct의 내부 변수값을 바꾸기 위해서는 mutating이라는 강제로 mutability를 부여하는 접두어를 붙여야 한다. 셋 째, Struct는 상속이 불가능하지만, Class는 상속이 가능하다. 이는 불변성의 연장선으로 볼 수 있다. 데이터 저장 방식 struct의 데이터는 그 자체가 값으로 저장이 된다. 따라서 기존 struct가 새로운 struct에 할당되면 기존..

    [Swift] struct 내부에서 변수값 변경하기

    [Swift] struct 내부에서 변수값 변경하기

    struct의 immutability struct는 한 번 생성자를 초기화하면 struct 내부에서는 var 로 선언되더라도 프로퍼티의 값을 바꿀 수 없게된다. 예를 들어 아래와 같이 struct Person에 addAge를 하는 코드를 넣어본 후 실행해보자. struct Person { let name: String var age: Int let temperature: Float init(_name: String, _age: Int, _temperature : Float) { name = _name age = _age temperature = _temperature } func addAge() { age += 1 } } 아래와 같이 age가 immutable 하다는 warning이 뜬다. 이유는 초기화..

    [Swift] struct 한 번에 정리하기

    [Swift] struct 한 번에 정리하기

    struct란? struct는 클래스의 특별한 형태로, 데이터를 저장하기 위해 만들어지는 특별한 클래스이다. struct를 사용해 여러 변수들을 결합해 하나의 타입을 만들 수 있다. *자바의 POJO나 코틀린의 data class와 같다. struct만들기 struct는 다음 세가지 원칙을 이용해 만들어진다. struct에서 결합되는 변수들은 property라 부른다. struct 내부에 func을 넣을 수 있다. 생성자를 사용해 struct를 초기화 할 수 있으며 커스텀 생성자는 init()함수를 이용해 만들 수 있다. 위 세가지를 적용하면 Struct는 다음과 같이 만들어진다된다. 각 변수(property)에 이름을 부여할 수 있어 가독성이 좋아진다. struct StructName { let pro..