전체 글 68

[WWDC19] Architecting Your App for Multiple Windows

[WWDC19] Architecting Your App for Multiple Windows https://developer.apple.com/videos/play/wwdc2019/258/ Architecting Your App for Multiple Windows - WWDC19 - Videos - Apple Developer Dive into the details about what it means to support multitasking in iOS 13. Understand how previous best practices fit together with new... developer.apple.com 제가 이해한 부분 위주로 정말 대충 정리했습니다 ㅡ.,ㅡ ;; 반박 시 님 말이 다 맞음 ~ ..

iOS 개발/iOS 2023.03.07

[회고] 상당히 늦은 2022년 회고 (+ 1일 1커밋)

[회고] 상당히 늦은 2022년 회고 (+ 1일 1커밋) 2023년이 된지 26일이 지나서야 2022년 회고를 작성하네요 ^^ 마음 같아서는 12월이 가기 전에 쓰고 싶었지만 ... 이제라도 쓰는게 어디인가요 ㅎㅎ 여튼 제 2022년이 어떻게 지나갔는지 .. 한 번 되짚어보려고 합니다. 🤹‍♂️ 퇴사 2021년 7월부터 2022년 1월 말까지 스타트업에서 앱 개발자로 근무했습니다. 당시에는 React Native 랑 Flutter 를 주로 했었는데 지금 생각해보면 정말 아~무것도 모르고 했구나 싶네요. iOS 네이티브를 하고 싶었지만 계속 크로스 플랫폼만 하게되고, 개인공부를 할 시간이 적어지다 보니 퇴사를 결심했습니다. 사실 아주 작은 규모의 스타트업이었기 때문에 직장생활을 해봤다~ 라는 생각조차 들지..

ETC 2023.01.27

[iOS] 이미지 캐시 모듈 구현하기 (feat. Kingfisher)

[iOS] 이미지 캐시 모듈 구현하기 (feat. Kingfisher) 부스트캠프에서 그룹 프로젝트를 진행 중, 주간 발표 세션에서 다른 팀이 이미지 캐시 모듈을 개발했다는 소식을 들었습니다. 이미지 캐시를 UIImage 의 extension 을 이용해서라던지, 혹은 클래스 하나로 분리하여 디스크에 파일을 저장해본 적은 있지만 완전히 독립적으로 동작할 수 있는 모듈은 구현해본적이 없던 터라 저희도 이미지 캐시 모듈을 구현해보고자 했습니다. 아무래도 iOS 이미지 캐시 라이브러리 중 가장 유명한 Kingfisher 를 모방해보면 좋겠다는 생각을 했고, 저희 이미지 캐시 모듈 이름은 KingReceiver 로 정했읍니다. ^.^ GitHub - trumanfromkorea/KingReceiver Contri..

iOS 개발/iOS 2022.12.28

[회고] 부스트캠프 웹・모바일 7기 멤버십 iOS 후기

[회고] 부스트캠프 웹・모바일 7기 멤버십 iOS 후기 부스트캠프 개발자의 지속 가능한 성장을 위한 학습 커뮤니티 boostcamp.connect.or.kr [회고] 부스트캠프 웹・모바일 7기 챌린지 iOS 후기 (+ 멤버십 합격) [회고] 부스트캠프 웹・모바일 7기 챌린지 iOS 후기 (+ 멤버십 합격) 부스트캠프 개발자의 지속 가능한 성장을 위한 학습 커뮤니티 boostcamp.connect.or.kr 저는 2021년 초부터 약 1년간 React Native 와 Flutter trumanfromkorea.tistory.com 2022년 7월, 챌린지부터 시작해 5개월간 참여한 부스트캠프의 공식 일정이 모두 종료되었습니다. 저에게는 개발자로써 더 성장할 수 있는 소중한 시간이었기에 회고를 한 번 적어볼..

ETC 2022.12.22

[Swift] weak self, 어떻게 사용해야할까? (2/2)

[Swift] weak self, 어떻게 사용해야할까? (2/2) [Swift] weak self, 어떻게 사용해야할까? [Swift] weak self, 어떻게 사용해야할까? 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용 trumanfromkorea.tistory.com 앞선 글에 이어서 마저 작성해보도록 하겠습니다. GCD GCD 호출은 나중에 실행하기 위해 어딘가에 저장하지 않는 한 순환참조가 발생할 위험이 없습니다. 다음 코드와 같이 작업이 바로바로 수행되는 경우에는 [weak self] 를 사용하지 않더라도 메모리 누수가 발생하지 않을 것입니다. func nonLea..

iOS 개발/Swift 2022.10.23

[Swift] weak self, 어떻게 사용해야할까? (1/2)

[Swift] weak self, 어떻게 사용해야할까? (1/2) 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용하는 경우 self 를 사용해야 한다는 경고창을 한 번쯤은 보신적이 있으실겁니다. 저는 위와 같은 상황을 겪을때마다 별 생각 없이 self 를 앞에 붙여주었습니다. 시간이 지나 self 는 해당 클로저를 품고있는 객체를 강하게 참조한다는 것을 알게 되었고, [weak self] 를 이용하다는 것이 안전하다고 하기에 그렇게 사용하고 있었습니다. 하지만 이런 경우 self 가 약하게 참조되기 때문에 옵셔널 체이닝을 해주거나, guard let 구문을 이용하여 바인딩 해줘..

iOS 개발/Swift 2022.10.23

[회고] 부스트캠프 웹・모바일 7기 챌린지 iOS 후기 (+ 멤버십 합격)

[회고] 부스트캠프 웹・모바일 7기 챌린지 iOS 후기 (+ 멤버십 합격) 부스트캠프 개발자의 지속 가능한 성장을 위한 학습 커뮤니티 boostcamp.connect.or.kr 저는 2021년 초부터 약 1년간 React Native 와 Flutter 등을 주로 이용해 모바일 앱을 개발해왔습니다. 아무래도 하이브리드 앱은 제약사항이 많기도 하고, 앱 개발의 근본적인 부분을 학습해보고 싶어 2022년 2월부터는 본격적으로 Swift 언어와 iOS 개발에 대해 학습을 시작했습니다. 그러던 중 2022년 6월 부스트캠프 웹・모바일 7기 공고가 올라왔고, 저는 iOS 파트로 지원했습니다. 📝 서류 서류는 4가지 문항으로 구성되어 있었는데, Swift 나 iOS 에 치중된 문항들보다는 어떤 목표를 가지고 있는지,..

ETC 2022.08.25

[컴파일러 이론] Tokenizer, Lexer, Parser

[컴파일러 이론] Tokenizer, Lexer, Parser 컴파일러는 소스코드를 기계어로 바꿔주는 역할을 합니다. 이 때 구문분석 -> 최적화 -> 코드생성 -> 링킹 의 과정이 진행됩니다. 구문분석 과정에서 소스코드는 Tokenizer, Lexer, Parser 를 차례대로 지나가며 구문분석을 진행하게 되는데, 오늘은 이 부분에 대해 알아보도록 하겠습니다. Tokenizer Tokenizer 는 말 그대로 어떤 구문을 토큰화 하는 역할을 합니다. 여기서 토큰이란 어휘 분석의 단위를 뜻하며 단어, 단어구, 문자열 등 의미있는 단위로 정해집니다. 토큰은 어떤 요소들을 구조적으로 표현할 수 있도록 도와줍니다. Lexer Lexer 는 Tokenizer 로 인해 쪼개진 토큰들의 의미를 분석하는 역할을 합니..

[운영체제] 캐시 교체 정책

[운영체제] 캐시 교체 정책 & LRU 캐시 교체 정책에 대해 알아보기 전, 캐시에 대한 이해가 필요하신 분들은 아래 게시물을 참고하시면 좋을 것 같습니다. 2022.08.19 - [운영체제] 캐시 (Cache) 캐시의 용량은 매우 작기 때문에 캐싱되는 모든 데이터를 다 담아둘수가 없습니다. 그래서 새로운 데이터를 캐싱하기 위해서는 불필요한 데이터를 지워줘야 하는데, 불필요한 데이터를 나누는 기준을 캐시 교체 정책이라고 합니다. 캐시 교체 정책 캐시 교체 정책에는 크게 3가지가 있습니다. FIFO (First In First Out) Queue 와 같이 가장 먼저 들어간 데이터를 교체 구현은 간단하지만 교체가 잦을수도 있음 LFU (Least Frequently Used) 사용 횟수가 가장 적은 데이터를..