본문 바로가기

분류 전체보기

(16)
[Xcode] MVVM 패턴 2022. 11. 4. 11:08
MVVM 패턴의 큰 장점은 Controller의 역할 비중을 줄일 수 있다는 것이다. 가령, 기존의 MVC 패턴에서는 UI나 비지니스 로직 관련 모든 메서드를 Controller에서 구현했다. 따라서, 수많은 메서드를 구분하는 작업이 번잡하고 비효율적이었는데 MVVM 패턴을 통해 해결해보자. 간단하게, 숫자를 입력하면 세자리 수 단위를 나누는 콤마가 자동으로 찍히는 기능을 MVVM으로 구현해보자. Observable, ViewModel, ViewController 클래스 코드로 이루어진다. 기존의 MVC 패턴을 상상하고 비교하면서 살펴보자. Observable 클래스 "너희 둘, Controller랑 ViewModel끼리 직접 소통도 가능하겠지만, 내가 더 매끄럽게 도와줄께!" "처음 Binding할 때..
[Xcode] 새로운 방법으로 컬렉션뷰 만들기(3) - Diffable Data Source + List Configuration 2022. 11. 3. 10:18
이번 게시글에서는 가장 최신 기능 조합인 Diffable Data Source(데이터 관리)와 List Configuration(컬렉션뷰 레이아웃)을 사용하여 컬렉션뷰를 만들어보자 Diffable Data Source : UICollectionViewDataSource를 상속받은 UICollectionViewDiffableDataSource 2019년 iOS 13 WWDC19 참고 (advances in UI data sources) Advances in UI Data Sources - WWDC19 - Videos - Apple Developer Use UI Data Sources to simplify updating your table view and collection view items using ..
[Xcode] 새로운 방법으로 컬렉션뷰 만들기(2) - UICollectionViewDataSource + List Configuration 코드 개선 2022. 11. 1. 02:19
이전 게시글에서 UICollectionViewDataSource + List Configuration 조합으로 새로운 방식으로 컬렉션뷰를 만들어 보았다. 여기에서 코드를 더 개선해보자 [Xcode] 새로운 방법으로 컬렉션뷰 만들기(1) - UICollectionViewDataSource + List Configuration [Xcode] 새로운 방법으로 컬렉션뷰 만들기(1) - UICollectionViewDataSource + List Configuration 컬렉션뷰 개념은 iOS 6 버전에서 처음 등장했다. 그리고 기존의 개발 방식에서의 단점을 보완하고, 다양한 기능이 추가되어 iOS 13 버전과 iOS 14 버전에서 새로운 기능이 출시되었는데, 이에 대해서 adeulnom.tistory.com 개..
[Xcode] 새로운 방법으로 컬렉션뷰 만들기(1) - UICollectionViewDataSource + List Configuration 2022. 10. 31. 01:14
컬렉션뷰 개념은 iOS 6 버전에서 처음 등장했다. 그리고 기존의 개발 방식에서의 단점을 보완하고, 다양한 기능이 추가되어 iOS 13 버전과 iOS 14 버전에서 새로운 기능이 출시되었는데, 이에 대해서 알아보자. 컬렉션뷰는 아래의 3가지 측면으로 바라볼 수 있다. 1. 어떤 데이터가? (데이터 관리) 2. 어떤 레이아웃에? (컬렉션뷰의 레이아웃) 3. 어떻게 렌더링 되는지? (셀 관리) 그래서 iOS 6 버전 이후의 컬렉션뷰를 개발하는 방식은 다음과 같다. 1. 인덱스 기반 프로토콜인 UICollectionViewDataSource로 데이터를 관리 2. UICollectionViewLayout의 하위 클래스인 UICollectionViewFlowLayout으로 레이아웃을 관리 3. UICollecti..
[Project] 나는오늘 출시 회고 2022. 10. 5. 00:36
https://apps.apple.com/kr/app/%EB%82%98%EB%8A%94%EC%98%A4%EB%8A%98/id6443586907 ("나는오늘" 앱스토어 링크) ‎나는오늘 ‎언젠가 잊혀질 소중한 오늘을 간단히 기록해보세요! "나는오늘"은 깜찍한 캐릭터와 한장의 사진 그리고 일기를 통해 하루를 기록하는 초간단 일기앱입니다. 짧은 시간동안 당신의 하루를 정 apps.apple.com 나는오늘 V1.0.0 개발 요약 정식출시 : 2022년 10월 3일 소요기간 : 9월 8일 ~ 10월 3일 (총 26일) 역할 : 1인 프로젝트(기획, 디자인, 개발) UI 구성 : SnapKit과 AutoLayout을 활용한 코드 기반 UI (런치스크린을 제외한 모든 화면) 로직 흐름 : MVC 패턴 오픈소스 FS..
[Swift] 옵셔널 2022. 7. 18. 21:09
옵셔널이라는 개념은 스위프트에서 최초로 도입되었다. 생소한 개념이라서 어렵다고 생각하는 경우가 많은데, 알고 보면 정말 도움되는 존재이다. 마치 자동차의 고장을 방지하는 윤활유 같은 존재랄까.. 일반 타입의 오류 발생 어떠한 변수를 선언하고 값을 초기화하지 않는다면 오류가 발생한다. 그리고 프로그램은 그 즉시 작동을 멈춘다. var a: Int print(a) // 에러 발생: a의 메모리에 저장된 값 없음 이러한 융통성 없는 오류를 발생시키지 않고, 일단 프로그램을 실행시킬 수 있는 것이 옵셔널이다. 옵셔널 타입을 잘 활용한다면, 보다 자유롭게 데이터 관리가 가능하다. 옵셔널 // 간편표기 var a: Int? print(a) // nil 출력 // 정식표기 var a: Optional print(a)..
[Swift] 클래스와 구조체 2022. 7. 17. 22:06
Swift의 Custom 타입에는 Enum, Class, Struct가 있다. iOS 개발 진입 장벽이 높다고 하는 수많은 이유 중 하나가 Swift의 Class와 Struct 때문이라고 생각한다. 반대로 Class와 Struct를 잘 이해한다면 앞으로의 iOS 개발에 큰 도움이 될 것이다. 클래스와 구조체 우선, 클래스(Class)와 구조체(Struct)를 서로 거의 비슷한 쌍둥이라고 생각하자. 클래스/구조체는 흔히 붕어빵 틀에 비유가 되곤 하는데, 여기서는 신문공장을 예로 들겠다. 우리는 신문공장을 Newspaper Class/Struct라고 부른다. 공장은 아래와 같이 생겼다. // 구조체로 선언하려면 class를 struct로 변경만 해주면 됨 class Newspaper { var title..
[Swift] Enum(열거형) 2022. 7. 16. 22:45
Swift에는 Int, Double, String, Bool과 같이 처음부터 내장되어있는 기본타입이 있다. 그리고 개발자가 직접 타입을 만들 수도 있는데 이를 커스텀 타입 또는 사용자 정의 타입이라고 한다. 커스텀 타입에는 Enum, Class, Struct가 있다. 그 중에서 열거형 타입인 Enum에 대해서 알아보자. Enum 타입 타입 자체를 한정된 사례(case) 안에서 정의할 수 있는 타입이다. 예를 들면, 요일(월화수목금토일), 행성(수금지화목토천해), 가위바위보를 정의할 수 있다. Enum 타입의 기본 형식은 다음과 같다. enum Weekday { case monday case tuesday case wednesday case thursday case friday case saturday c..
[Swift] 함수 2022. 7. 15. 18:37
코딩에서 가장 많이 사용하는, 그리고 오류도 많이 발생하는, 하지만 가끔은 편리한, 코딩의 꽃! 함수에 대해 알아보자 함수의 장점 반복되는 코드 재사용 가능 미리 함수를 정의하고 나면, 쉽게 사용만 하면 됨 함수의 기본 형태 함수를 활용하기 위해서는 정의와 호출을 알고 있어야 한다. 기본적인 함수 정의와 호출정의한 함수를 호출하면 함수 내부의 실행문이 실행된다. // 정의 func someFunction() { print("이 형식이 기본적인 함수 정의이다.") } // 호출 someFunction() 함수의 Input과 Output 함수는 Input 값과 Output 값을 가질 수 있는데, 각 경우에 따라서 코드 형식이 약간 달라진다. 1. Input 값과 Output 값 모두 없는 경우 // 정의 f..
[Swift] 튜플 2022. 7. 14. 22:42
튜플은 집단자료형 타입이다. 여러 요소를 담을 수 있다는 점에서 배열과 비슷하게 볼 수 있다. 이 둘의 차이를 러프하게 생각한다면, 배열은 여러가지 요소들을 담는 목적이 더 강한 '가방'과 같고, 튜플은 담긴 요소들에 접근하여 연계하는 활용성이 큰 '비닐봉지'와 같다. 음.. 비유는 비유일 뿐 큰 의미를 두지 말자... 먼저, 튜플에 대해서 자세하게 알아보자. 튜플은 집단자료형 타입으로, 연관된 데이터의 조합으로 어떠한 형태든 만들 수 있는 타입이다. let person: (String, Stirng, Int) = ("홍길동", "남자", 28) // 타입 추론 가능 튜플 내부 데이터 접근은 다음과 같다. print(person.0) // "홍길동" 출력 print(person.1) // "남자" 출력 ..