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 메모리 ..

    Metal Rendering

    Rendering the Triangle 랜더링은 다섯 단계로 수행된다. Display Link 생성 Render Pass Descriptor 생성 Command Buffer 생성 Render Command Encoder 생성 Command Buffer를 커밋 Note: 이론적으로 이 앱은 실제로 프레임 마다 랜더링할 필요가 없다. 왜냐하면 삼각형이 그려진 후에는 움직이지 않기 때문이다. 그러나 대부분의 앱은 움직이는 부분이 있기 때문에 이 방식을 배우면, 미래의 튜토리얼에 좋은 시작점을 제공할 수 있을 것이다. 1. Creating a Display Link 화면이 갱신될 때마다 화면을 다시 그릴 수 있는 방법이 필요할 것이다. CADisplayLink는 디스플레이의 새로 고침 속도에 동기화된 타이머다..

    Metal Start

    Start Metal은 Apple 하드웨어에서 매우 효율적으로 설계되어 OpenGL ES를 사용할 때보다 향상된 속도와 낮은 오버헤드를 제공한다. 이 튜토리얼에서는 Metal API를 사용해서 간단한 삼각형 그리기를 해볼 것이다. 만약 OpenGL등의 경험이 있다면 Metal에도 동일한 개념이 많이 적용되어 있어 쉽게 할 수 있을 것이다. Metal을 사용해 랜더링을 하려면 7단계를 따라야 한다. 1. MTLDevice 2. CAMetalLayer 3. Vertex Buffer 4. Vertex Shader 5. Fragment Shader 6. Render Pipeline 7. Command Queue 1. MTLDevice 먼저 MTLDevice에 대한 참조를 얻어야 한다. GPU에 직접적으로 연결되..

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

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