본문 바로가기

iOS

[WWDC 2018] LLDB 코드 수정 없이 Debugging 해보자! 2018’s WWDC was Advanced Debugging with Xcode and LLDB 를 기반으로 한 Xcode and LLDB Advanced Debugging Tutorial Part(1,2,3) 포스트를 정리한 내용입니다. 시작하기 앞서 Demo Project 환경을 설정합니다. 1. 처음 앱을 시작하면 TableView 에 post 가 보여집니다. 2. TableView Footer 에 Load More Indicator 가 표시됩니다. 3. TableView 하단에 스크롤이 도달하면 다음 페이지를 표시합니다. 4. 풀 다운으로 Post 를 새로고침할 수 있습니다. 5. "Page 0", "100 Posts" 로 현재 페이지 상태를 표시합니다. 버그들! 🥺 1. 풀 다운으로 새로고침을.. 더보기
Coding Guidelines for Cocoa 이 포스트는 Apple Documentation Archive 중 Coding Guidelines for Cocoa 정리한 포스트입니다. Introduction to Coding Guidelines for Cocoa 공개 API를 사용하여 Cocoa 프레임 워크, 플러그인 또는 기타 실행 파일을 개발하려면 애플리케이션 개발에 사용 된 것과 다른 접근 방식 및 규칙이 필요합니다. 제품의 주요 클라이언트는 개발자이며 프로그래밍 인터페이스에 의해 미스터리되지 않는 것이 중요합니다. General Principles Clarity (명확성) 가능한 한 명확하고 간략하게 하는 것이 좋지만, 간결함으로 인해 명확성이 손상되지 않아야 합니다. Code Commentary insertObject:atIndex: ✅ i.. 더보기
Framework Programming Guide 이 포스트는 Apple Documentation Archive 중 Framework Programming Guide 정리한 포스트입니다. What are Frameworks? 아래 항목들을 단일 패키지로 캡슐화하는 계증적 디렉토리입니다. dynamic shared library nib files image files localized strings header files reference documentation 프레임워크는 정적 링크 라이브러리 및 기타 유형의 동적 공유 라이브러리에 비해 다음과 같은 장점을 제공합니다. 1. 프레임 워크는 서로 관련되어있는 별도의 리소스를 그룹화합니다. 이 그룹화를 통해 해당 자원을 보다 쉽게 ​​설치, 설치 제거 및 찾을 수 있습니다. 2. 프레임워크는 라이브러리보다.. 더보기
Dynamic Library Programming 이 포스트는 Apple Documentation Archive 중 Dynamic Library Programming 에서 Dynamic Library Design Guidelines 위주로 정리한 포스트입니다. Mac OSX의 Dynamic Library 에 대한 포스트입니다. Introduction 앱은 필요한 많은 기능을 구현하기 위하여 라이브러리를 사용합니다. 그러나 라이브러리에 연결하면 대용량 실행 파일이 생성되고 메모리가 낭비됩니다. 앱의 파일 크기 및 메모리 설치 공간을 줄이는 한 가지 방법은 앱 시작 시 로드되는 코드 크기를 줄이는 것입니다. What Are Dynamic Libraries? 정적 링커를 사용하여 앱을 라이브러리와 연결하면 앱에서 사용하는 코드가 생성 된 실행 파일에 복사됩니.. 더보기
ABI 란? ABI 를 이해하기 가장 좋은 예는 API 와 비교하는 것이다. Stackoverflow 에서 잘 설명된 답변을 찾아볼 수 있었다. API (Application Programming Interface) API는 코드 레벨에서 다른 소프트웨어와 통신하는 인터페이스를 정의한다. ABI (Application Binary Interface) ABI는 특정 아키텍처에서 두 개 이상의 소프트웨어 간 하위 수준 이진 인터페이스를 정의한다. Application과 상호 작용 Application이 커널과 상호 작용 Application이 Library와 상호 작용 즉, ABI는 API와 특정 CPU 아키텍처의 기계 언어를 정의한다. 또 API는 런타임 호환성을 보장하지 않지만 ABI는 기계 언어(Machine la.. 더보기
[WWDC 2016] Currency Programming Guide (2/2) Currency Programming Guide (1/2) Currency Programming Guide (2/2) WWDC 2016 Concurrent Programming With GCD in Swift 3 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. Choosing a Quality of Service 코드가 다른 CPU 우선 순위, 다른 IO 스케줄링 우선 순위로 실행된다. Using Quality of Service Classes QoS 품질에 따라 우선순위를 제어할 수 있다 dispatch queue 에서 비동기화(async) 가 실행되면 실행 컨텍스트가 캡쳐된다. DispatchWorkItem DispatchWorkItem allocateCurrent.. 더보기
[WWDC 2016] Currency Programming Guide (1/2) Currency Programming Guide (1/2) Currency Programming Guide (2/2) WWDC 2016 Concurrent Programming With GCD in Swift 3 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. 동시성 도입에 대한 대가로 스레드 안전성을 유지하기가 어렵습니다. GCD는 우리 플랫폼의 동시성 라이브러리입니다. Apple Watch에서 모든 iOS 장치를 통해 작동하는 코드, 멀티 스레드 코드를 작성하는 데 도움이됩니다. Dispatch Queues and Run Loops 자신의 스레드를 만들 수 있으며, 그 스레드에서 실행 루프를 실행할 수 있습니다. Main스레드는 유일하게 Main Run Loop 와.. 더보기
[WWDC 2018] iOS Memory Deep Dive (2/2) WWDC 2018 iOS Memory Deep Dive (1/2) WWDC 2018 iOS Memory Deep Dive (2/2) Images 이미지에서 메모리 사용은 파일 크기가 아니라 이미지의 크기와 관련이 있다는 것입니다. why is it so much larger? SRGB Format 픽셀 당 8 비트이므로 빨강은 1 바이트, 초록은 1 바이트, 파랑은 1 바이트, 알파 구성 요소로 총 4byte가 필요합니다. Wide format iOS 하드웨어는 넓은 형식을 렌더링 할 수 있습니다. 이제 표현력있는 색상을 얻으려면 와이드 포맷으로 픽셀 당 2 바이트가 필요하므로 이미지 크기를 두 배로 늘립니다 4 *2 = 8 byte 하지만 더 작아질 수도 있습니다. Gray와 Alpha 값만 저장합니다.. 더보기