본문 바로가기

개린이 이야기61

타입으로서 프로토콜에 관하여 타입으로서 프로토콜 일급객체 프로토콜 -Swift에서 프로토콜은 일급 객체다. 일급 객체란 특정 타입이 다음과 같은 특성을 가지고 있을 때를 말한다. 1) 변수나 데이터 구조에 저장 가능 2) 함수의 매개변수로 전달 가능 3) 함수의 반환값으로 사용 가능 4) 런타임에 생성 가능 따라서 프로토콜을 변수, 상수, 배열, 딕셔너리 등의 값으로 사용하거나, 함수의 매개변수나 반환값으로 사용할 수 있다는 것을 의미한다. 프로토콜의 일급 객체 특성은 프로토콜을 유연하게 사용할 수 있도록 한다. 프로토콜을 변수나 상수로 사용하기 protocol Describable { func describe() -> String } class Dog: Describable { func describe() -> String { r.. 2023. 6. 5.
Swifty한 Swift 코드에 관하여 소개 Swift다운 코드란 무엇일까요? Swift 언어를 배우고 사용하면서, Swift의 기본 문법에 대해 이해하고, 어떻게 사용하는지 알아가며 경험을 쌓아왔습니다. 하지만 문득 이런 생각이 들었습니다. "내가 작성하는 코드는 좋은 코드인가?", "내가 Swift를 정확히, 효율적으로 사용하고 있는 것일까?" 좋은 코드라는 것은 여러 방면에서 광범위한 의미를 가질 수 있습니다. 하지만 우리가 사용하는 언어는 Swift이고, Swift는 Apple이 특정한 설계 원칙과 의도를 가지고 만든 언어입니다. 그러므로, 그 의도에 맞게 언어를 사용하는 것이 좋은 코드를 작성하는 가장 기본적인 목표가 될 것이라 생각합니다. 또한 어떤 강의에서 감명 깊게들은 말이 있습니다. "개발자의 기능 구현은 당연한 것이고, 이 .. 2023. 5. 30.
Kingfisher 라이브러리에 관하여 Kingfisher란? -Swift로 작성된 이미지 캐싱 라이브러리로, 웹 상의 이미지를 비동기적으로 다운로드하고 캐시하는데 사용된다. 이미지 다운로드 작업, 캐싱 작업 등을 쉽게 처리해주기 때문에 개발자에게 편리한 라이브러리다. Kingfisher의 주요 기능 1. 비동기 이미지 다운로드 -Kingfisher는 이미지 다운로드 작업을 비동기적으로 수행한다. 이로 인해 UI가 멈추거나 지연되는 일 없이 원활하게 작동한다. 2. 이미지 캐싱 -이미지는 한 번 다운로드 된 후에는 디스크와 메모리에 캐시된다. 이로 인해 같은 URL로부터 이미지를 여러 번 요청하더라도, 캐시된 이미지를 사용하기 때문에 앱의 반응성이 향상된다. 3. 이미지 처리 -Kingfisher는 다양한 이미지 처리 기능을 제공한다. 예를 .. 2023. 5. 28.
디자인 패턴 - MVC 패턴에 관하여 디자인 패턴 -간단하게 말하면 소프트웨어 개발방법을 공식화 한 것이다. 소프트웨어를 개발할 때 자주 발생하는 문제들이 있었고, 이를 해결하기 위해 사용되는 패턴, 구조를 공식화 한 것이다. -디자인 패턴은 소프트웨어를 개발할 때, 발생하는 다양한 문제에 대한 재사용 가능한 템플릿 해결방법이다. -디자인 패턴은 문제 해결에 대해 표준화된 접근 방식을 제공하여 개발자가 복잡한 설계 개념을 더 쉽게 이해하고 전달할 수 있도록 한다. 디자인 패턴의 장점 1. 반복되는 문제 해결 개발 중에 직면하는 문제들에 대해서 이미 입증된 해결책을 가지고 있는 패턴이기 때문에 효과적으로 문제를 해결할 수 있다. 2. 향상된 커뮤니케이션 개발자 간 커뮤니케이션에서 "우리는 State 패턴을 사용하고 있어요", "여기서는 Sin.. 2023. 4. 4.
SingleTon(싱글톤)에 관하여 싱글톤 패턴 -Class가 인스턴스를 하나만 가지도록 제한하면서 언제 어디서든 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. -특정 기능을 수행하는 객체 하나를 생성하여, 공용으로 사용할 때 사용된다. 싱글톤 구현 방법 1. 싱글톤 클래스가 메모리에 처음으로 올라갈 때, 한 번만 초기화되는 타입 인스턴스를 정의한다. class Singleton { static let shared = Singleton() } 언제 어디서든 접근하기 위해 static 키워드를 통해 타입 프로퍼티를 만들고 인스턴스를 정의한다. 2. 클래스의 기본 이니셜라이저 메소드를 private으로 제한한다. class Singleton { static let shared = Singleton() private init() { } }.. 2023. 2. 3.
Infinite Carousel 구현 위 사진처럼 무한히 보여주는 Carousel을 구현하는 방법에 대해서 설명해보려고 한다. 이것을 구현하기 위해 너무도 많은 Carousel 관련 블로그를 보았다.(머리가 그만큼 안좋음.) 다른 블로그들에는 쉽다고 하는데.. 왜 나는 하루종일 걸렸을까... Carousel -컨베이어 벨트처럼 이어지는 뷰를 말한다. -어느 방향으로 스크롤하든 무한으로 이어질 수 있다. -포커스되어 있는 cell이 아니라면 크기를 작게. -타이머를 이용하여 자동으로 스크롤. -스크롤에 맞춰 pagecontrol의 currentpage 변경 1. CollectionView 설정 중요한 것만 말해보면 1) 컬렉션 뷰 안의 inset을 설정해주는 것으로, cell을 가운데에 위치시키기 위해 left, right 각 inset을 넣.. 2023. 1. 21.