[Swift]Swift Task 내에서 weak self를 붙여야 하는가
피어 세션을 진행하며 동료가 겪었던 트러블 슈팅을 공유 받았었습니다. Task 블럭 내에서의 self 캡쳐와 관련된 내용이었는데, 당시 Concurrency에 대해 잘 몰라 이해가 가지 않았고 이해하기 위해 직접 실험해보았습니다! weak self 를 하는 이유 Swift에서의 이스케이핑 클로저에서 self에 접근하려고 하면 명시적으로 self를 ...
피어 세션을 진행하며 동료가 겪었던 트러블 슈팅을 공유 받았었습니다. Task 블럭 내에서의 self 캡쳐와 관련된 내용이었는데, 당시 Concurrency에 대해 잘 몰라 이해가 가지 않았고 이해하기 위해 직접 실험해보았습니다! weak self 를 하는 이유 Swift에서의 이스케이핑 클로저에서 self에 접근하려고 하면 명시적으로 self를 ...
프로젝트를 생성할 때 SwiftUI를 선택하면 기본적으로 AppDelegate와 SceneDelegate가 생성되지 않습니다. 하지만 아직까지 외부 SDK연결이나 APNs와 같이 AppDelegate가 필요한 상황이 있고, 기존 UIKit 에서 SwiftUI 로 마이그레이션하는 과정에 있다면 SceneDelegate에서 SwiftUI 뷰를 UIKit ...
신규 프로젝트에서 SwiftLint를 도입하기로 했습니다! 예전에 SPM으로 설치해본 경험이 있지만 너무 오래되서 가물가물하더라구요. 그래서 이번 기회에 정리해놓으려고 합니다. 방식이 두가지가 있습니다. 첫번째는 SwiftLintBuildToolPlugin 을 사용하는 방법입니다. 하지만 이 방식은 build phase에 script를 추가하지 않...
“\bdeadline”: finish: true tags: UIView RunLoop layoutSubviews 오늘은 UIView Draw Cycle에 대해 정리해볼거에요. 평소에 layoutSubviews와 같은 UIView Draw Cycle에 해당하는 메소드를 오버라이딩하여 사용하는 경우가 있었는데, 이 메소드가 ...
2024년 9월 7일(토), 왁타버스 뮤직 3.0 출시와 함께 발생한 장애를 포함한 이벤트들을 타임라인 순으로 기록하려고 합니다. 출시 일정 우선 출시 계획은 다음과 같았습니다. 오후 5시: 서버에서 진입 금지 플래그 설정 오후 5시 30분: 앱 배포 오후 6시: PV영상 공개 & 서버 진입 금지 플래그 제거 컨텐츠 유출을 막기 위해 서버...
iOS 13 이후 SwiftUI 발표와 함께 아이패드에서 스플릿뷰를 통해 멀티 윈도우를 지원하게 되면서, SceneDelegate, Scene 이란 개념이 생겨났다고만 알고 있었습니다. 프로젝트를 할 때마다 window 와 scene에 대한 정확한 개념이 없어서 대충 이런거겠거니.. 하고 사용했었는데, 이번에 제대로 짚고 넘어가보려고 합니다. UIW...
목차 ViewController? UIView? View Life Cycle 이란? 실제 결과 확인 ViewController? UIView? iOS 앱은 하나 이상의 뷰로 구성되어 있으며, 뷰는 ViewController 위에 있습니다. 그리고 ViewController에 UIView 나 UIButton 과 같은 뷰를 올리기 때문...
UIKit을 처음 접할 때, 스토리보드는 구닥다리다, 협업에 불편하다 등 악평을 많이 들어 코드베이스로 입문했었습니다. 그리고 이번에 스토리보드를 사용해보게 되었고, 이번 기회에 스토리보드와 코드간의 연결통로? 역할을 해주는 IBAction 과 IBOutlet이 무엇인지 학습해보기로 했습니다. 목차 IB(Interface Builder) I...
목차 SQL 이란 SQL 명령어 분류 DDL(데이터 정의어) CREATE ALTER DROP TRUNCATE DML (데이터 조작어) INSERT UPDATE DELETE SELECT DCL (데이터 ...
GCD를 활용해 비동기 코드를 작성하며 자주 헷갈리는 sync, async 그리고 Serial, Concurrent를 조합했을 때 어떻게 동작하는지 그림과 함께 정리해보려고 합니다. GCD가 무엇인지는 이 곳에서 확인 가능합니다! Serial + Sync var numbers = [0, 1, 2, 3, 4] let dispatchQueue = Dis...