본문 바로가기

iOS/Swift40

[iOS/Swift] immutable한 구조체, mutating을 적용한다면? 이전에 다룬 구조체(Struct)의 주요한 특징을 기억하시나요? 참조 타입인 클래스(Class)와는 달리, 인스턴스 객체가 생성될 때 마다 별도의 값을 가지게 되는, '값 타입(Value Type)'이란 부분이 구조체의 중요한 특징 중 하나였습니다. 그렇기 때문에 ~ 클래스는 인스턴스 메서드를 활용해 내부 인스턴스 값을 변경할 수 있으나, 구조체는 '값' 자체를 복사하여 사용하므로 그렇지 못한다고 생각했지만...? 구조체의 성질을 '변화' 시켜서 내부 데이터 값을 수정할 수도 있습니다! 그 시작으로 mutable과 immutable이란 용어를 짚고 넘어가보도록 하겠습니다. mutable과 immutable 구조체는 상수(Constant)와 동일한 변화되지 않는(Immutable) 성질이다. mutatin.. 2023. 3. 7.
[iOS/Swift] 약속을 위한 청사진(Blueprint), 프로토콜(Protocol) 사실 요 프로토콜(Protocol)은 클래스 파트에서 함께 다뤘어야 하는데, 비슷하게 생긴 클래스와 구조체를 먼저 비교하고 넘어가야 이해가 쉬울것 같아.. 이제서야 뒤늦게 부랴부랴 포스팅을 시작해봅니다😅 이번 시간엔 아~주 간단하게, 프로토콜(Protocol)의 개념과 선언방식만 알아보겠습니다. 프로토콜(Protocol)이란 무엇인가요? 최소한의 요구사항과 규칙을 준수하기 위한 청사진(BluePrint) 청사진(BluePrint)이라고 하니, 지난번에 다룬 클래스의 추상화, 상속성 어쩌구 내용이 떠오르지 않으신가요? 프로토콜은, 클래스나 구조체, 열거형 등 일종의 '틀' 이라 불리는 이들에게 더 높은 위치에서 '요구사항'과 '규칙'을 설정합니다. 왜 필요하나요? 클래스 혹은 구조체 등 특정 '틀'이 구조.. 2023. 3. 5.
[iOS/Swift] Swift에서의 구조체(Struct), 값 타입과 참조 타입의 비교 이번 포스팅에서는 앞서 다뤄온 '클래스'와 비슷해 보이지만, 큰 차이점이 존재하는 구조체(Struct)에 대한 내용을 살펴볼까 합니다. 어떻게 선언하고, 사용하는지와 더불어 클래스와의 차이점에 대해 알아보도록 하겠습니다. Swift의 구조체 클래스와 유사하나, 값(Value) 타입의 캡슐화를 제공하는 틀 클래스와 동일하게, 구조체 또한 [객체지향 프로그래밍]의 기초를 형성합니다. 선언된 데이터와 기능(프로퍼티, 메서드)을 재 사용할 수 있는 객체이며, 추상화(인스턴스로의 실체화를 위해 공통된 속성과 행위를 정의)를 목표로 관련된 데이터를 캡슐화(결합, 집합화)하는 방법을 제공합니다. 선언 및 활용방법 클래스와는 달리, class 키워드 대신 struct 키워드를 사용하여 선언합니다. 클래스와 동일하게 프.. 2023. 2. 22.
[iOS/Swift] 상속(Inheritance)을 통한 재 정의, 오버라이딩(Overriding) 지난 클래스의 상속(Inheritance)에 대한 포스팅에 이어, 상위 클래스(SuperClass) 내 포함된 기능을 '커스텀'하여 사용할 수 있는 방식인 오버라이드(Override)방식에 대해 살펴보도록 하겠습니다. 상속받은 하위 클래스에서 새로운 메서드를 만드는 방법 완전히 새로운 메서드를 만들거나, 오버라이딩(Overriding)을 활용하거나 상위 클래스에서 상속을 받은 하위클래스는 정확한 기능과 원하는 작업을 위해 자신만의 메서드를 만들 수 있습니다. 방식은 크게 2가지로 구분됩니다. (지난 포스팅에서 다룬 Aniamls 상위 클래스를 예시로 재 활용하도록 하겠습니다) class Animals { var name: String? var age: Int? func sound(name: String).. 2023. 2. 19.
[iOS/Swift] 클래스의 계층구조, 상속(Inheritance)의 개념과 활용 클래스의 생성, 선언, 그리고 구성요소에 대해 익숙하신지요? 그렇다면, 객체지향 프로그래밍 포스팅에서 다룬 클래스의 상속성(Inheritance)과 다형성(Polymorphism)에 대한 개념을 살펴볼 시점입니다. 객체지향 프로그래밍의 특징 [CS/Basic] 객체지향 프로그래밍의 특징과 설계원칙(SOLID) 자, 이번 포스팅은 지난번 객체지향 포스팅에서 미처 다루지 못했던 객체지향 프로그래밍의 4가지 특징 그리고 객체지향 설계 원칙(SOLID) 위 2가지 사항에 대하여 살펴볼 예정입니다. 이전에 다 iosdevlime.tistory.com 클래스의 상속(Inheritance) 클래스는 상속을 통해 계층구조를 만들며, 상위 클래스의 특성을 물려받을 수 있다 사실, 객체지향 프로그래밍의 4가지 특징 중 상.. 2023. 2. 13.
[iOS/Swift] 간단하게 알아보는 프로퍼티(Property)의 유형 쉬어가는 차원으로.. 앞서 살펴본 클래스의 구성요소 중 내부에 선언되는 변수, 상수인 프로퍼티(Property)에 대한 내용을 다뤄볼까 합니다. 메모리(Memory)관련 내용과 함께 다루기엔, 다소 장황해질 수 있으므로 이번 포스팅에선 매우 간략하게 살펴보도록 하겠습니다. (지연 저장 프로퍼티나 타입 프로퍼티는, 구조체 포스팅 이후에..) 저장 프로퍼티(Stored Property) 클래스나 구조체 내부에서 활용가능한, 메모리 상에 저장되는 프로퍼티 우선, 지금까지 살펴본 프로퍼티의 유형, 저장 프로퍼티를 먼저 짚고 넘어가겠습니다. 저장 프로퍼티란? 값를 저장하기 위해 선언하는 변수 혹은 상수입니다. 클래스(Class)나 구조체(Struct)에서만 활용이 가능합니다! 저장 프로퍼티는 메모리(Memory).. 2023. 2. 12.