ios 31

[Swift] 프로토콜 뽀개볼까 (3) | Codable (feat. Encodable & Decodable), JSON이란?

그동안 Codable은 Encodable과 Decodable을 합쳐 놓은 거다 이렇게 이해하고 쓰곤 했었는데이해하는 거랑 정리해 놓는 거랑은 또 다르니까 한 번 정리해보려 합니다!  📍공식문서일단 공식문서를 보면프로토콜도, 클래스도, 구조체도 아닌 Type Alias 라고적혀 있네요?   그럼 typealias 란 무엇인가? -> 직역하면 '타입 별명'입니다. 예시를 좀 보자면이렇게 함수에 클로저를 전달할 때, 매개변수에 이런 식으로 타입을 나타내죠func functionName(completionHandler : () -> Void ) {} 근데 (() -> Void) 타입에 대한 별칭을 주고 그 별칭으로 치환해서 사용할 수도 있는 것입니다.typealias Handler = () -> Voidfun..

Swift 2024.04.28

[Swift] 프로토콜 뽀개볼까 (2) | Comparable

지난번에 이어서 프로토콜에 대해 자세히 살펴볼까합니다!  저번 글에서 설명한 Equatable이 동등성 비교(==, != 연산자 사용)를 위해 필요한 프로토콜 이라면Comparable은 =, > 연산자를 사용하여 대소를 비교하기 위해 필요한 프로토콜인데요!  일단 공부의 시작인 공식문서부터 볼까요     📍공식문서A type that can be compared using the relational operators =, and >.protocol Comparable : Equatable 정의를 보면 이 프로토콜을 채택함으로서 =, > 연산자를 쓸 수 있다고 하네요!   근데 Comparable은 Equatable을 채택하고 있네요..?그렇다... 우린 Comparable을 준수하는 타입을 만들면 자연..

Swift 2024.04.27

[Swift] 프로토콜 뽀개볼까 (1) | Equatable & ==, === 차이

항상 프로토콜을 다양하게 사용하고 있음에도 정확한 의미나 원리 같은 것은 정리해 본 적이 없는 것 같아 프로토콜 뽀개볼까 시리즈로 정리해 볼까 합니다!! 당연해 보이는 걸 당연하게 넘기지 않는 연습을 좀 더 해볼까 해요~~ 여느 때와 같이 나를 위한 정리랄까.. 타인에게 도움이 된다면 더할 나위 없이 좋습니닿ㅎ🤍 프로토콜 뽀개볼까의 첫 번째 프로토콜! Equatable입니당 📍공식문서 https://developer.apple.com/documentation/swift/equatable#overview Equatable | Apple Developer Documentation A type that can be compared for value equality. developer.apple.com 일단 공..

Swift 2024.04.21

[Swift] Swift의 동시성 프로그래밍 (1) | GCD

GCD는 iOS에서 비동기 처리를 위해 반드시 알아야 하는 개념이다. 프로젝트를 만들면서 메인스레드만을 가지고 작업하는 경우는 거의 없죠?? 왜냐.. 네트워크 통신 등 시간이 드는 작업들은 비동기 처리를 해주어야 앱이 자연스럽게 돌아가는 것처럼 보이기 때문! 현대인들은 조금의 딜레이도 못 참지..! 이렇게 비동기 처리를 해줄 때 보통 메인 스레드에서 가지고 있었던 task를 다른 스레드와 함께 나누면서 여러 개의 스레드를 사용하게 되는데 이러한 멀티스레드에서의 환경에서 반드시 알아야 하는 개념이 바로! 동시성 프로그래밍이다. iOS가 동시성 프로그래밍을 지원하는 대표적인 기술이 GCD 인 것이다. 동시성 .. Concurrency.. 많이 들어보긴 했는데 발음도 비슷한 비동기, 동기와는 또 어떻게 다른데..

Swift 2024.03.17

[Swift] mutating 키워드와 COW(Copy On Write)

swift에서 value type(enum, struct)의 프로퍼티는 기본적으로 메서드 내에서 수정할 수 없는데 수정해야 하는 경우 앞에 mutating키워드를 붙여줘야 하는 것을 모두 알고 있을 것이다. mutating을 선언한 메서드는 메서드 내에서 프로퍼티를 변경할 수 있고 메서드가 종료될 때 변경한 모든 내용을 원래 struct 인스턴스 메모리에 다시 기록하도록 하는 것이다. struct Person { var name: String mutating func changeName() { name = "changedName" } } var heidi = Person(name: "heidi") heidi.changeName() 그렇다면 mutating라는 키워드는 왜 필요한 것일까? swift는 값이..

Swift 2023.12.24

[iOS] Core Data (3) | codegen(generating code) 이해해보자!

저번 Core Data (1) 글에서 Core Data Model을 생성할 때 .xcdatamodeld 파일을 만들고 Entity를 추가, 각 엔터티에 attribute 추가하는 등의 작업을 했다. 그때 Entity에 대해 다양한 설정을 해주는 부분에서 codegen 항목에 있는 category/extension, manual/none, class definition 각 옵션이 어떤걸 의미하는지 정확히 이해하지 못해서 나중에 다시 설명하는 글을 쓰겠다고 넘겼는데 이번 글에서 이 부분을 설명해 보겠다. [iOS] Core Data (1) | Persistence [iOS] Core Data (2) | CRUD [iOS] Core Data (3) | codegen(generating code) 이해해보자! ..

iOS 2023.12.17

[iOS] Core Data (2) | CRUD

1편에서 작성한 core data 내용을 바탕으로 실제 뷰에 반영되도록 하는 예시를 만들어보려 한다. 추가로 CRUD를 해줄 수 있는 코어데이터 매니저를 만드는 방법까지!! 하다 보니 뭔가 아주 잘 맞는 케이스는 아니지만 최대한 단순하게 CoreData의 활용을 테스트해보고 싶었기에 소개한다. [iOS] Core Data (1) | Persistence [iOS] Core Data (2) | CRUD [iOS] Core Data (3) | codegen(generating code) 이해해보자! # 🥨 뷰 생성 table 뷰 만들어주고 row 추가, coredata에 저장된 데이터 확인, coredata에 저장된 데이터 삭제 할 수 있는 버튼 총 3개를 만들어준다. 여기까지는 뷰에 대한 영역이니까 이 글..

iOS 2023.12.10

[iOS] Core Data (1) | Persistence

우리는 앱이 종료되고 실행되고 상관없이 저장되어 있으면 하는 데이터가 있을 것이다. 물론 서버에 저장해 놓고 매번 호출해서 데이터를 받을 수 있겠지만 앱 자체에서 데이터를 저장해 놓는 방법도 당연히 있지 않을까? ㅇㅇ 당연히 있다. 이부분이 바로 Persistence(영구성)에 대한 개념이다. 영구 없다 그 영구 말고 ^^ 대표적으로 많이 언급되고 접할 수 있는건 UserDefaults와 Core Data이다. 하지만 사용방법과 진입장벽은 좀 차이가 있어서 일단 비교적 쉽게 가벼운 데이터를 저장해 놓을 수 있는 UserDefaults를 알아보고 비교적 진입장벽이 높지만 무거운 데이터를 효율적으로 저장해 놓을 수 있는 Core Data에 대해 알아보겠다. [iOS] Core Data (1) | Persis..

iOS 2023.12.09

[iOS] handoff가 도대체 뭐야 | (feat. TaskManagement, NSUserActivity)

어떤 글에서 개발환경에서는 handoff 기능을 테스트할 수 없다고 해서 궁금해졌다.. handoff 는 무엇이며.. 시뮬레이터에서는 왜 테스트해보지 못하는 걸까? 아직 명확하게 알진 못했지만 계속 테스트를 하다 보니 짐작이 가는 이유는 있었는데 그게 맞는지는 확실하지 않다.. 누군가 잘 아는 사람 있으면 같이 이야기해보고 싶네 ㅎㅎ 일단 handoff라는 용어는 처음 들어봤는데 알고 보니 친숙한 기능이었다. 우리가 아이폰 크롬에서 뭘 검색하고 있는데 맥북 dock에서 이런 표시가 뜨는 것을 본 적이 있을 것이다. 이런 기능이 바로 handoff이다. 아이폰에서도 이 앱을 사용하고 있다는 것을 디바이스를 초월하여 알려주고 있다. 앱 아이콘을 누르면 내가 크롬에서 검색하고 작업하고 있었던 것을 그대로 가져..

iOS 2023.12.02