전체 글 674

[iOS] WWDC21 테크톡 - Find and fix hitches in the commit phase

서론 WWDC21 테크톡 - Find and fix hitches in the commit phase에서는 Commit phase의 hitch를 찾고 고치는 내용을 다룹니다. hitch와 commit phase가 무엇인지는 WWDC21 테크톡 - Explore UI animation hitches and the render loop를 확인해 주세요. What is a Commit Transaction 터치 이벤트를 받으면 UI를 업데이트하게 됩니다. 시스템은 레이아웃이나 디스플레이 변경이 필요한 서브 뷰들을 기록합니다. 그리고 다음 Commit phase에서 시스템에 의해 draw와 layoutSubviews가 호출되면서 업데이트 됩니다. Commit Transaction은 4단계로 이루어집니다. lay..

WWDC/iOS 2023.09.10

[iOS] WWDC21 테크톡 - Explore UI animation hitches and the render loop

서론 WWDC21 테크톡 - Explore UI animation hitches and the render loop에서는 hitch와 render loop가 무엇인지 알아보고, hitch의 종류, hitch를 측정하는 방법에 대해 알아봅니다. 이번 포스팅에서는 측정하는 방법까지만 다루고, 다음 포스팅인 Find and fix hitches in the commit phase에서 hitch를 제거하는 방법을 알아보겠습니다. What is a hitch 앱에서 애니메이션은 사용자와 앱 사이의 시각적 연결을 도와줍니다. 예를 들어, 사용자가 손가락을 화면을 쓸어넘기면 화면이 변해야 합니다. hitch는 예상보다 늦게 화면에 나타나는 프레임으로, 다음 프레임의 생성이 늦어져 애니메이션이 끊기는 시간입니다. hi..

WWDC/iOS 2023.09.10

[회고] 네이버 부스트캠프 웹・모바일 8기 멤버십 2주 차 회고 & 기술적 고민

서론 네이버 부스트캠프 웹・모바일 8기 멤버십 2주 차를 마쳤습니다. 이번 2주 차에는 기술적인 고민 위주로 진행했습니다. 애니메이션 제네릭과 프로토콜 딥다이브 스터디 이번 포스팅은 위 세 개를 다뤄보겠습니다. (좀 짧을듯?) 애니메이션 이번 멤버십에서는 스위프트가 아니라 iOS를 다루기 때문에 앱과 관련된 기술이 많습니다. 간단한 애니메이션도 있었는데 저는 애니메이션을 처음 해봐서 조금 헤맸어요. 어떤 구조로 동작하는가?에 대해 생각을 했고, 2주 차가 끝난 지금은 여러 애니메이션 방법과 WWDC 테크톡을 보면서 제대로 다루기 위해 공부하고 있습니다. (곧 테크톡 포스팅도 올라오니 꼭 봐주세요 ㅎㅎ) 애니메이션을 처음 해본 입장에서는 좀... 어렵긴 했어요 ㅎㅎ; 이렇게 하면 내 생각대로 되겠지? 하는..

[회고] 네이버 부스트캠프 웹・모바일 8기 멤버십 1주 차 회고 & 기술적 고민

서론 네이버 부스트캠프 웹・모바일 8기 멤버십의 1주 차가 끝났습니다. 챌린지보다는 스케줄이 여유로워서 꽤나 괜찮은 일주일이었습니다. 이번 주는 1주차여서 그런지 아직까지는 크게 힘들지는 않았습니다. 하지만 앞으로도 이렇게 여유롭게 진행될지는 모르겠습니다. 더 어려운 과제가 주어지고 더 바쁜 스케줄이 기다리고 있을지도 모르니, 더욱 노력해서 잘 따라가야겠습니다. 네이버 부스트캠프 웹・모바일 8기 멤버십 회고부터는 기술적 고민을 함께 적으려고 합니다. 예를 들어, 확장성의 고민, 타입 고민처럼 Swift, UIKit, 설계 등의 고민일 거 같네요. 챌린지 때는 단순한 일기였다면 멤버십부터는 개발자로서의 성장을 위해 회고하려고 합니다. 다만 문단을 명확히 구분하진 않을 거예요. 일상적인 회고도 성장에 도움이..

[iOS] Alert 개선 과정 단계별로 살펴보기

서론UIAlertController는 보일러 플레이트가 생기기 쉽습니다.UIAlertController 생성UIAlertAction 생성present위 세 가지 로직이 반복적으로 사용되기 때문입니다. 메서드로 분리할지라도 UIAlertAction 생성에 중복 코드가 생기고, 그게 아니라면 메서드 파라미터가 많아집니다. 이번에는 Wrapper를 사용해 선언형 구조로 Alert를 깔끔하게 정리해 보겠습니다. 많이 고민하며 진행했지만 잘못된 부분이 있을 수 있습니다. 댓글로 피드백 꼭 부탁드립니다. 전체 코드는 아래 링크에서 확인 가능합니다. https://github.com/jeongju9216/SwiftPractice/tree/main/ExampleAlertWrapper/ExampleAlertWrapper..

iOS/개념 & 개발 2023.08.30

[Swift] Equatable의 Synthesized Conformance 분석

서론 구조체와 클래스의 프로토콜 자동 준수 메커니즘 (w. ChatGPT)에서 Synthesized Conformance를 가볍게 다뤘습니다. 이번 포스팅에서는 SIL, CPP 코드를 분석해 Equatable의 Synthesized Conformance가 진행되는 과정을 알아보겠습니다. Equatable Equatable은 == static 메서드를 준수해야 하는 프로토콜로 == 연산자의 좌변과 우변을 비교해서 같은지 확인해 주는 역할입니다. 그리고 Synthesized Conformance를 지원하는 프로토콜 중 하나죠. Equatable은 아래 상황에서 Synthesized Conformance를 지원합니다. 구조체가 Equatable을 준수하는 저장 프로퍼티만 가지고 있는 경우 열거형의 모든 케이스..

[Swift] 구조체와 클래스의 프로토콜 자동 준수 메커니즘 (w. ChatGPT)

서론 최근 Equatable, Hashable, Comparable을 복습하면서 궁금한 점이 있었습니다. 왜 구조체는 채택만 해도 자동으로 준수가 되는데 클래스는 직접 요구 메서드를 구현해야 하는 걸까?입니다. Value 타입과 Reference 타입의 차이와 연관이 있다는 건 추측할 수 있었지만, 명확한 이유를 찾긴 어려웠습니다. 그래서 이번에는 ChatGPT와 함께 문제를 해결해 보았습니다. 스텝 바이 스텝으로 대답이 정확해지는 과정이 재밌어서 이렇게 포스팅으로 남겨봅니다. 1. 일단 질문하기 일단 큰 고민 없이 물어봤습니다. 그럴듯한 대답이 나왔습니다만, "값 타입이 프로토콜을 채택만 해도 되는 이유"에 대한 답은 아니었습니다. 2. 클래스와 비교하여 질문 다음은 클래스와 비교해서 질문했습니다. 이..

[iOS] Jeongfisher 4. Extension Wrapper와 파라미터 고민

GitHub - jeongju9216/Jeongfisher: 유정주의 이미지 캐시 라이브러리 유정주의 이미지 캐시 라이브러리. Contribute to jeongju9216/Jeongfisher development by creating an account on GitHub. github.com Extension Wrapper Extension Wrapper는 최근에 포스팅을 했었죠? (Generic, Protocol을 이용한 Extension Wrapping) Jeongfisher에서 적용을 해서 공유하고 싶은 마음에 포스팅을 작성했었습니다 ㅎㅎ 이번 포스팅에서는 Jeongfisher에 Extension Wrapper를 적용하면서 어떤 고민을 했는지 작성해보겠습니다. 참고로 이번 포스팅에서 구현 방법은..

[iOS] Jeongfisher 3. JFImageDownloader, 중복 Request 처리

GitHub - jeongju9216/Jeongfisher: 유정주의 이미지 캐시 라이브러리 유정주의 이미지 캐시 라이브러리. Contribute to jeongju9216/Jeongfisher development by creating an account on GitHub. github.com JFImageDownloader JFImageDownloader는 URL을 이용해 이미지를 다운로드하는 클래스입니다. 메모리 캐시와 디스크 캐시에 데이터가 없을 때 JFImageDownloader를 이용해 네트워킹을 하는 거죠. 이미지 다운로더를 만들면서 힘들었던 것은 중복 Reqeust 처리입니다. 동일한 URL로 여러 번 Reqeust를 하면 비효율적이겠죠? 그래서 URL을 딕셔너리에 저장해 두고 중복 Req..

[iOS] Jeongfisher 2. 메모리 캐시, 디스크 캐시

GitHub - jeongju9216/Jeongfisher: 유정주의 이미지 캐시 라이브러리 유정주의 이미지 캐시 라이브러리. Contribute to jeongju9216/Jeongfisher development by creating an account on GitHub. github.com 서론 Jeongfisher는 메모리 캐시와 디스크 캐시를 사용합니다. 이번 포스팅에서는 두 개의 캐시를 구현하면서 고민한 내용을 적어보려고 해요. 특히 메모리 캐시를 구현할 때 기초적인 내용을 깊게 고민할 수 있었습니다. 메모리 캐시 구현 이유 메모리 캐시는 NSCache를 사용하는 대신 직접 구현했습니다. 메모리 캐시 구현 과정을 직접 고민하고 싶었기 때문입니다. NSCache를 사용하면 물론 편하겠지만... ..

반응형