일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Swift
- 1009번
- Java
- Associated Value
- persistentStoreCoordinator
- Swift 고차함수
- Clean swift
- dateFormatter
- NSPredicates
- Swift LinkedList
- iOS Static Library 사용하는방법
- Swift closure
- Raw value and Associated value
- LightWeight Migration
- codability
- 스위프트 클로저
- CoreData
- CoreData Concurrency
- leetcode #01
- expensive operation
- iOS Static Library
- CoreData Stack
- NSManagedObject SubClass
- 일급 객체
- 다익스트라 이해
- 2022 부스트캠프
- 트레일링 클로저
- CoreData Filter
- Persistent store Coordinator
- NSSortDescriptor
- Today
- Total
목록전체 글 (58)
하루를살자
Presentation Layer는 ViewModel, View 들을 포함하고, ViewModel 프로퍼티인 items 들은 View에서 관찰하고 있는 오브젝트들이다 (관찰하는 오브젝트들이 업데이트되면 view에서 변한 값을 적용하여 사용자에게 보여줌). 즉 ViewModel 은 View에서 필요한 데이터를 관리하고 있는 것이다. 이 과정에서 ViewModel 은 entity의 raw 한 데이터 타입을 View에 바로 보여줄 수 있는 형식으로 변환하는 작업도 해준다. ex) MovieListViewModel 의 item 은 Observable이고, MoviesListView 인 MoviesListViewController에서 MoviewListItemViewModel의 데이터를 사용자에게 시각화뿐만 아니..
Error Description "This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your mac and device in order to correctly detect compatibility." 해결 아래 링크를 통해 현재 디바이스의 iOS 버전 을 확인하고 해당 버전의 zip 파일을 다운받은뒤 아래 디렉토리 에 붙혀넣어주면 해결 현재 Iphone iOS Version: 15.6 인데 아래 깃헙 링크엔 15.5 만 나와있다. 15.5 zip 을 다운받고 압축해제해준뒤 파일명을 15.6 으로 바..
배경 Xcode version : 13.3 Simualtor iOS version: 15.2 Mac CPU: M1 지도를 사용하는 새로운 프로젝트를 시작하려고 네이버 지도 패키지를 pod으로 설치한 뒤 여기에 나온 과정대로 세팅하는 중에 제목과 같은 architecture arm64 에러가 발생했다. 에러 분석 및 해결 ❗️주의 : 내용 중 틀린 내용이 있을 수 있습니다. 잘못된 정보가 있다면 바로 댓글 달아주세요.. //Error ld: building for iOS Simulator, but linking in dylib built for iOS, file '../test/Pods/NMapsMap/framework/NMapsMap.framework/NMapsMap' for architecture ar..
Domain Layer 예제 프로젝트에서 Domain Layer 에 속하는 Domain 폴더를 살펴보자. 크게 3가지 분류: Entities, UseCase, Repository 의 Interface 로 나눠서 볼수 있다. Entity : 프로젝트에 사용되는 도메인 정보. Usecase : 어플리케이션 안에서 사용자가 사용할수 있는 메인 기능 의 인터페이스와 구현체. UseCase 는 또 다른 Usecase 에 의존할수 있다 UseCase 는 interactor 라고도 부른다 Repository Interface : Dependency Inversion 을 위한 인터페이스. (Dependency Inversion 은 이 아티클에서 잘 설명해줌) protocol SearchMoviesUseCase { ..
이 포스트 시리즈 에선 MVVM 과 Clean Architecture 를 사용한 프로젝트 예시 를 보며 적용 방식을 이해하고 직접 만든 프로젝트를 리팩토링하는 시간을 가질예정 입니다. Clean Architecture 란? 프로젝트를 진행하다보면 나도 모르게 같은 코드를 다른곳에서 다시 쓰고 있고, 기능을 추가 하거나 수정해야할시 어디서부터 무었을 건드려야할지 모를때가 있다. 이런경우는 흔하게 발생하고 실제로 기능하나를 추가 하기 위해서 처음부터 다시 프로그램을 작성해야하는 상황도 번번히 나오고 있다. 이런경우를 미연에 방지하기 위해서 software 엔지니어들은 다양한 방법을 고안했는데, 이중 Robert Cecil Martin 라는 사람이 프로그램을 작성하는 것은 마치 건물을 짓는것과 같은 행위라고..
1.0 클래스 프로퍼티간의 강한 순환 참조 ARC 란? 위 글에서 정리한듯 ARC 는 Heap 영역에 instance 의 reference count 가 0 일때 자동으로 메모리를 해제해준다. 강한 순환 참조 (strong reference cycle) 은 한쌍의 인스턴스의 가 서로를 참조하고 있어서 reference count 가 0 이 되지않기 때문에 deinit 이 안되는 상황을 말한다. 아래 예제 코드 를 살펴보자 class Phone { let type: String var owner: Person? init(type: String){ self.type = type } deinit { print("Phone Deinit") } } class Person { let name: String var ..
Capture 클로저의 캡처 방식은 아래와 같은 코드가 주어질때 func doSomething() { //1 var num: Int = 0 print(address(of: &num)) print("num check #1 = \(num)") //2 let closure = { print(address(of: &num)) print("num check #3 = \(num)") } num = 20 print("num check #2 = \(num)") closure() } 1.0: num 은 0 이라는 int 타입의 값을 생성하면서 메모리에 값이 저장된다. 2.0: Closure 안에 외부 변수인 num 을 사용해서 print 하게 되는데, closure 내부의 scope 안에 선언된 외부 변수를 사용하게 되..
ARC ARC는 메모리 영역 중 힙 영역을 관리한다 . 힙 메모리 영역은 인스턴스, 클로저 등 참조타입(reference type) 등이 자동으로 등록 된다. (왜 클로저가 reference Type 인지는 다음 포스트에서 알아보겠다.) class Person { let name: String } //1 let person1 = Person(name: "Kai") //2 let person2 = person1 1.0 힙 영역에 Person 인스턴스 메모리 할당, person1 은 stack 영역에서 person Instance 의 메모리 주소를 pointing 하고 있다. 2.0 person2 라는 변수가 stackMemory 에 새로 할당되는데, 똑같은 Heap Memory 의 Person Instan..