전체 글(97)
-
Xcode 26.2 upgrade 후, build error @_lifetime experimental feature
컨텍스트:TCA와 tuist가 적용된 프로젝트 증상:OS 26.2로 업데이트 후, 빌드 되던 프로젝트가 빌드 에러.TCA에서 사용하는 apple 공식 라이브러리인 swift-collections에서 @_lifetime attribute에서 빌드 에러 발생 원인: swift 6.2 이후 compiler flag 조건으로 활성화된 -lifetime attribute (experimental feature)가 활성화되지 않음 해결 방법: TL; DR: 디팬던시 지우고 재설치 근본적인 문제의 해결 방법은 해당 타겟의 빌드 세팅에서 하지만 라이브러리 수정을 위해 unlock해야하고, tuist에서 tuist generate 시에 매번 적용 및 해야함 CI시에도 불가능함lifetimeoveride.swift 파일..
2025.12.21 -
iOS 개발자의 React 공부하며 느낀 점
iOS를 하다 React 개발을 하게 되어 공부를 하고있는데 다른 것도 많고 비슷한 것도 많았다.공통점SwiftUI에서 State/Observable 등을 통한 State 동기화Flux 패턴Environment와 Context를 통해 dependency 전달할 때 편리하게 관리Stateful / Stateless component가상 Dom을 활용한 부분 렌더링 교체 방식SwiftUI는 가상돔은 아니지만 tree의 diff 연산을 통해 부분 교체하는 점이 닮은 것 같음tuist/pnpm(workspace) 등의 모노레포 트렌드차이점트렌드의 빠른 변화SSR이었다가 CSR이었다가 이제는 또 다시 SSR로 변경되었다. SSR로 다시 돌아왔다. 물론 SSR이 필수는 아니다.이 때문에 풀스택 개발자가 되어버렸다...
2025.11.29 -
[HIG] UX Writing - 인터페이스를 위한 글쓰기 WWDC 2022
Developer Challenge의 다른 추천 영상을 보고 감상 및 정리! WWDC 2022룰 - 프레임워크PurposeAnticipationContextEmpathyPurposeConsider information hierarchy유저의 시선을 고려해서 타이틀 / 설명 / 버튼을 배치해라Know What you leave out간결하고 꼭 필요한 것만 남겨둬야 한다. 이미지를 사용하면 더욱 효과적이다.고온의 온도계 아이콘으로 컨텍스트 전달이 글을 읽지 않고도 이미 되었다!새로운 기능을 소개할 때!유저에게 이 기능이 왜 여기있고, 이 절차가 왜 중요한지 알려라행위를 말하고 / 이유를 설명 한다Have a purpose for every screen 온보딩이나 여러 스텝이 있는 화면이 있을 때, 해당 화..
2025.11.17 -
[HIG] UX Writing - 작은 텍스트 변화로 UI에 큰 임팩트 만들기
애플 디벨로퍼 챌린지 중에 글쓰기에 관한 WWDC를 추천받아 감상을 남겨본다.룰- 불필요한 수식어 제거하기- 반복을 피하기- 목적을 말하며 시작하기- 단어 리스트 만들기수식어 제거 | Remove filler수식어를 제거해야하는 예수식어를 사용해야하는 예핵심 기능인 경우 이런 수식어가 많이 있을 경우, 잠시 멈추고 이 단어들이 가치가 있는지 고민해보자! 감탄사, 감사/사과 문구, 느낌표 등은 사용할 경우, 그 의미가 가벼워보이지 않는지, 주요 내용에 방해가 되는지 고민해봐야 한다.반복 피하기 | Avoid repetition UX Writing은 언어의 경제학(덜음의 미학?)이다.목적을 언급하며 시작하기 | Lead with the why유저에게 액션을 원할 경우, 이유를 같이 설명하는 것이 좋다.To..
2025.11.14 -
[코딩테스트] 📦 컨베이어 벨트 위 로봇 - 백준 20055
문제링크난이도: 골드 5유형: 구현, 시뮬레이션소요시간: 1시간 + GPT회고며칠 안 풀었다고 머리가 굳은 것 같다.코드let NK = readLine()!.split(separator: " ").map { Int($0)! }let (N, K) = (NK[0], NK[1])var A = readLine()!.split(separator: " ").map { Int($0)! }var robot = [Bool](repeating: false, count: N)var start = 0let size = 2 * Nvar step = 0func beltIndex(_ start: Int, _ posOnTop: Int, _ size: Int) -> Int { (start + posOnTop) % size}whi..
2025.11.10 -
[코딩테스트] 신고결과받기 - Kakao 2022 BLIND
문제링크난이도 구현유형구현소요시간20분회고오랜만에 푸는 문제여서 레벨 1로 워밍업했다. 중간에 런타임 에러 나는 케이스가 있어서 index 접근 런타임 에러 방지를 위해 길이가 0인 경우 탈출문을 추가했다.코드import Foundationfunc solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] { // 신고 여부 테이블 var idTable: [String:Set] = [:] // 차단 테이블 var reportTable: [String: Int] = [:] report .map { $0.split(separator: " ") } .forEach { value in ..
2025.11.05