
앱을 개발하는데 있어서, 효율적인 알고리즘 및 로직을 작성하는 것도 중요하지만 불필요한 리소스가 낭비되는 것을 방지되는 것 역시 매우 중요합니다! Memory Leak, 즉 메모리 누수의 경우 불필요하게 메모리 영역을 잡아먹음과 동시에 메모리에서 해제되지 않은 인스턴스가 지속적으로 특정 로직을 실행하게 되면 리소스를 잡아먹기 때문에 앱의 성능에도 영향을 끼칠 수 있습니다. 아무튼 쉽게 생각하고 간과해서는 안 되는 문제라는 건데요. 이러한 메모리 누수를 확인하고 해결하는 방법 세 가지를 소개해 드리려고 합니다. 1. retain cycle이 발생하지 않도록 주의 깊게 코드를 작성하자! Swift의 경우 ARC에 의해 힙 영역에 할당된 인스턴스 중 reference count가 0인 인스턴스의 경우 메모리에..

앱에 따라서, 웹뷰(webView)를 사용해야 하는 경우가 있는데요, 이때 웹뷰를 사용하는 앱에서 Safari 개발자용 도구를 사용해 디버깅하는 방법을 소개해드리려고 합니다. 먼저 몇가지 설정이 필요한데요. 아래 순서를 차근차근 따라가면 됩니다 :) 1. 아이폰 - 설정 - Safari - 맨 하단 고급 - 웹 속성 On 2. 맥 Safari 환경설정 - 고급 - 메뉴 막대에서 개발자용 메뉴 보기 체크 3. 아이폰 연결 후, 웹뷰가 포함된 앱에서 웹뷰 띄우기 이미지는 생략! 4. 맥 Safari 개발자용 탭 - 연결된 아이폰 - 해당 앱의 웹 페이지 속성 진입 저는 개발중인 웹앱이 없어서, 아이폰 내 Safari 앱으로 대신했습니다 ㅋㅋ 이렇게 웹 속성에 진입하면, 아래와 같이 네트워크, CPU 사용량,..

오늘은 다양한 디버깅 방법에 대해 알아볼까 합니다. 구구절절 작성하기보다는 핵심만 간결하게 작성해보도록 하겠습니다 ㅎㅎ 1. 콘솔 창 메시지 확인 런타임 에러 발생 시, 앱 종료와 함께 앱이 종료된 이유를 콘솔 창을 통해 확인할 수 있습니다. 2. 디버거 활용 (Breakpoints & lldb) 두 번째 방법은 Breakpoints와 lldb를 활용하는 것입니다. 잘 사용하기 위해서는 디버깅 툴 바에 대해 이해하고 넘어갈 필요가 있습니다. 툴 바 설명 Disable/enable breakpoint: 브레이크 포인트 활성화/비활성화 . Pause/continue execution: 프로그램 실행 중지/이어서 실행 (만약 다음 breakpoint가 있다면 해당 breakpoint에서 멈추게 됩니다.) St..