iOS/학습

    WWDC 2024) 힙 메모리 분석하기

    Measurement힙을 이해하면 application의 virtual memory를 먼저 이해해야한다. 앱이 시작되면서 virtual memory의 빈 주소 공간을 얻는다. 그리고, App executable, Linked libraries을 로드하고 읽기 전용 Resources 영역에 매핑한다. 또한 앱 실행시 앱은 각 스레드에 local var, temp var에 대한 stack 영역을 사용하며, dynamic, static 메모리는 힙 이라고 통칭되는 메모리 영역에 배치된다.  힙은 단지 하나의 메모리 블록이 아니라 여러 virtual memory 영역으로 구현된다. Regions을 좀 더 확대하면, 각 Region이 개발 힙 alloc으로 구분된다. 내부적으로 이 Region은 16KB 메모리 ..

    Error) Tuist Package Dependency "No files found at: ../PrivacyInfo.xcprivacy" 해결하기

    해당 버그는 Tuist 자체 버그이기 때문에 Tuist로 일단 해결할 방법은 없다.우리 앱 같은 경우, Tabman, Pageboy 라이브러리가 문제가 됐는데, https://github.com/tuist/tuist/issues/5552 Tuist에 관련 이슈가 올라와 있으나 아직 merge가 되지 않아 라이브러리 내의 코드로 문제를 해결해야 했다. 문제가 되는 라이브러리를 포크해서, package.swift의 .target 부분을 다음과 같이 바꿔주자. ///기존 코드 .target( name: "Tabman", dependencies: ["Pageboy"], path: "Sources/Tabman", exclude: ["Tabman.h", "Info.plist", "Priva..

    Error) Tuist 3.x -> 4.x 마이그레이션시 생기는 No such module 문제 해결하기

    바쁘신 분들을 위해 결론부터 말하자면 Tuist에서 끌어오는 Swift Package Manager 의 Dependencies가 빌드되는 경로 "CONFIGURATION_BULID_DIR"의 "CONFIGURATION" 경로가 잘못되어서 생기는 문제다. 따라서 Package.swift 내부의 PackageSetting에서 baseSetting에 configurations 파라미터에 현재 빌드 세팅에 맞춰 이름을 지정해주면 해당 문제는 해결된다.  이걸 찾는 과정은 엄청 고단했는데, 일단 tuist 이슈에 비슷한 내용이 하나도 없었고 SPM의 오류에 대해 검색해봐도 비슷한 자료가 없었기에 더욱 힘들었다. 처음으로 시도해본것이 xcode 내부에서 직접 manage schemes을 통해 라이브러리를 빌드 후 ..

    [iOS] 푸시, 다이나믹 링크 등으로 실행될 때 디버깅하기

    앱 아이콘을 클릭하고, Edit Scheme...을 누른다. 이 후 Info 탭에서 Launch 메뉴를 보면 Automatically와, Wait for the executable to be launched가 있는데, Automatically가 기본 옵션이고, 아래 옵션이 앱 빌드 후, 내가 앱을 직접 실행할때 까지 기다리는 옵션이다. 이 옵션을 이용하면 다이나믹 링크나, 푸시 등으로 앱이 실행될때 디버깅을 쉽게 할 수 있다.