본문 바로가기

iOS56

[iOS/SwiftUI] some view와 불투명 반환타입(Opaque return type) Xcode를 통해 SwiftUI 프로젝트를 생성한 이후, 첫 화면인 ContentView에 담긴 코드를 유심히 살펴보다 보면.. 위와 같이 구조체(Struct), 그리고 View 프로토콜을 채택하고 있다는건 얼추 이해가 가는데.. 뷰를 그리는 body 메서드는 some View 라는 요상하게 생긴 타입을 반환하고 있습니다!? 궁금한 점은 어물쩡 넘어갈 수 없으니, 해당 키워드가 무슨 역할을 맡고 있고, 왜 작성되어야 하는지 살펴보는 포스팅 시간을 가져볼까 합니다. 불투명한 반환 타입(Opaque Return Type) 제너릭 타입과는 반대로, 함수의 '내부'에서 타입을 결정 사실, 프로토콜과 함께 다뤄야 하는 문법적 요소이나 불투명 반환타입을 살펴보기 위해 'someView'는 매우 좋은 예시가 되며, .. 2023. 3. 8.
[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.