GitHub - EST-iOS-TEAM2/Dietto: ESTSoft Final 팀프로젝트ESTSoft Final 팀프로젝트. Contribute to EST-iOS-TEAM2/Dietto development by creating an account on GitHub.github.com 이전 프로젝트에서 내부 DB가 필요할 때 CoreData를 주로 사용했는데SwiftData도 알아두면 추후에 마이그레이션 하기 좋을 거 같아 iOS 17 부터 사용할 수 있는 SwiftData를 이번 기회에 도입해보기로 결정했다. CoreData보다 쉽게 모델을 정의하고, 비슷하게 CRUD를 할 수 있는점 덕분에 SwiftData 도입에 어려운것은 없었다!난관에 봉착한 때는 CoreData처럼 BackgroundCont..
Multi-Threading?짧은 시간에 복잡하고 많은 작업을 실행하여 사용자에게 좋은 경험을 제공하기 위해,작업을 여러 프로세스에서 동시에 실행시키는 병렬 처리 방법!iOS에서도 역시 Multi-Threading을 지원한다. iOS에서 사용하는 Multi-Threading대표적인 3 가지!GCD (Grand Central Dispatch)Operation, OperationQueue (NSOperation)Swift Concurrency먼저 하나씩 알아보자! GCD (Grand Central Dispatch)https://developer.apple.com/documentation/dispatchGCD는...iOS 8.0+저수준 큐 기반멀티코어 환경과 멀티스레드 환경에서 최적화된 프로그래밍을 할 수 있..
고차함수 (High order function)다른 함수를 매개변수로 받거나 반환하는 함수를 의미한다.클로저와는 다르다 (클로저는 이름이 없는 익명함수) 고차함수가 매개변수로 받는 함수가 클로저일때가 많아서 헷갈릴수는 있지만, 고차함수 안에서 클로저를 자주 사용하는 것 뿐 같은 개념은 아니다.특징가독성함수형 프로그래밍 스타일재사용성 높음maplet numbers = [1, 2, 3, 4, 5]let twoTimesNumbers = numbers.map{ $0*2 }//[2, 4, 6, 8, 10]각 요소에 동일한 연산을 적용해 새로운 배열을 반환한다.for-in문과 비교했을 때 차이는 없지만, 속도면에서 차이가 있다. (요소가 많을수록 차이 남)flatMaplet numbers = [[1, nil], [..
정의ARC(Automatic Reference Counting)는 메모리 구조에서 힙 영역을 관리한다.Swift에서 힙에 메모리를 할때는 참조타입을 생성할 때 자동으로 할당하게 된다.ARC는 할당된 메모리가 더 이상 필요하지 않을 때 자동으로 해제한다.C++에서는 new, delete 키워드를 통해 클래스 인스턴스를 생성할 때 메모리를 할당, 해제 한다.특징컴파일 시점에 언제 참조되고 해제되는지 결정되어 런타임때 그대로 실행된다.장단점장점개발자가 참조 해제 시점을 파악할 수 있음RunTime 시점에 추가 리소스가 발생하지 않음단점순환 참조 발생 시 영구적으로 메모리가 해제되지 않을 수 있음MRC? ARC?둘 다 Reference Counting을 하지만, Manual, Automatic의 차이가 있다.M..
발생했던 문제Pinit 에서는 이미지가 있을때는 그대로 보여주고, 이미지가 없다면 기록한 위치의 지도를 스냅샷으로 보여준다.여기서 문제가 발생했다.이미지는 저장된걸 바로 보여주지만, 스냅샷은 주소만 보내주고 셀에서 스냅샷 이미지를 로드하기에 몇 초 더 지연시간이 생긴다.이때 셀이 엄청 많을때 스크롤을 하면, 재사용 때문에 이전에 사용된 이미지 또는 스냅샷이 먼저 보이고 나중에 제대로 된 스냅샷으로 갈아끼워지는 문제가 있었다.문제점 파악문제점은 역시 셀 재사용 매커니즘을 제대로 이해못하고 지연시간을 고려하지 않았기 때문이다.셀이 재사용 될 때 이전 데이터를 그대로 들고 있다는 것 역시 인지하지 못했기 때문에 일어난 문제였다.셀이 화면에서 사라지면 셀 자체가 지워지지 않고 이전 데이터 그대로 Reusable..