개발(29)
-
Objective-C의 _Nonnull, _Nullable, _Null_unspecified 완벽 정리 🚀
Objective-C를 사용하다 보면 포인터(*)가 NULL을 가질 수 있는지 여부를 명확하게 지정해야 하는 경우가 있어요.특히, Swift와 연동할 때는 더욱 중요하죠! 🧐이 문제를 해결하기 위해 Apple이 도입한 키워드가 바로 _Nonnull, _Nullable, _Null_unspecified 입니다.이번 글에서는 이 키워드들이 어떤 역할을 하는지, 언제 사용해야 하는지에 대해 알아보겠습니다. 1. _Nonnull, _Nullable, _Null_unspecified란?각 키워드는 포인터(T *)가 NULL을 가질 수 있는지 여부를 나타냅니다.키워드설명_NonnullNULL이 될 수 없음. 포인터가 절대 nil이 될 수 없음을 의미_NullableNULL이 될 수 있음. 포인터가 nil을 가질 ..
2025.01.06 -
Android 개발 중 생성되는 java_pidXXXX.hprof 파일의 비밀과 활용법
1. java_pidXXXX.hprof 파일이란?java_pidXXXX.hprof는 **Java 힙 덤프(Heap Dump)**를 저장한 파일로, 실행 중인 애플리케이션의 메모리 상태를 기록한 스냅샷입니다. 파일명에서 XXXX는 해당 프로세스의 PID(Process ID)를 의미합니다. 이 파일은 주로 Java 기반의 Android 프로젝트에서 메모리 문제를 디버깅하거나 분석할 때 사용됩니다.Android 개발 중 메모리 문제를 파악하고 디버깅할 수 있는 도구입니다. 이를 잘 활용하면 앱의 안정성과 성능을 크게 향상시킬 수 있습니다. 그러나 불필요한 파일 생성을 방지하고, 발생 원인을 철저히 분석하는 습관이 필요합니다.2. 언제 생성되는가?힙 덤프 파일은 다음과 같은 상황에서 생성됩니다:OutOfMemo..
2024.12.02 -
Xcode의 Breakpoints_v2.xcbkptlist 파일이란?
Xcode 프로젝트를 열다 보면 Breakpoints_v2.xcbkptlist라는 파일을 발견할 수 있습니다.Git에 커밋하다가 발견된 파일이 문득 궁금해져서 찾아보았습니다. 1. Breakpoints_v2.xcbkptlist 파일의 역할이 파일은 Xcode에서 사용자가 설정한 브레이크포인트(Breakpoints) 정보를 저장하는 XML 형식의 파일입니다. 브레이크포인트는 디버깅 과정에서 특정 코드 실행 시 멈추게 하거나 조건에 따라 동작을 분석할 수 있도록 도와주는 중요한 도구입니다.이 파일은 사용자가 설정한 브레이크포인트의 정보를 기록하고 프로젝트를 열 때 이를 복원하는 역할을 합니다. 예를 들어, 특정 함수 호출 시 중단되거나 로그 메시지를 출력하도록 설정한 모든 브레이크포인트가 이곳에 저장됩니다...
2024.11.27 -
Xcode에서 Provisioning Profile의 해시 값 계산 및 출력 방법
앱 개발 중 디버그 환경에서 embedded.mobileprovision 파일의 SHA512 해시 값을 계산하고 출력하는 방법을 설명합니다. 이 해시 값은 앱의 무결성 확인이나 보안 검증을 위해 사용할 수 있습니다. 1. Run Script Phase 설정빌드 과정에서 자동으로 해시 값을 계산하고 로그에 출력하려면 Xcode의 Run Script Phase를 사용합니다. 아래 단계에 따라 설정하세요.1.1 Run Script Phase 추가Xcode 프로젝트 열기Xcode에서 프로젝트를 열고, 좌측 상단의 프로젝트 파일을 선택합니다.Build Phases로 이동화면 상단 탭에서 Build Phases를 선택합니다.Run Script 추가하단의 + 버튼을 클릭한 후, New Run Script Phase를..
2024.11.26 -
[Swift] 자주 발생하는 iOS Swift 오류 및 해결 방법
개발자(나)가 자주 발생하는 Swift 관련 오류 해결 방법을 작성 해보겠습니다. 1. Unwrapping Optional 오류Swift는 타입 안정성을 위해 Optional 타입을 도입했습니다. 하지만 Optional 값을 강제 언래핑하려 할 때 nil이 있으면 앱이 크래시됩니다. 예를 들어, 다음과 같은 코드가 있다고 가정해봅시다. * Optional 타입이란? 변수에 값이 없을(nill) 가능성이 있을 때 사용. 일반 타입에 ?를 붙여 사용한다. nil을 가질 수 있기 때문에, 그 값을 사용할 때는 **언래핑(unwrapping)**을 통해 안전하게 값을 추출해야 한다. var testValue: String?print(testValue!)여기서 test Value가 nil이면 Fata..
2024.09.06 -
M1/M2 Mac에서 NPM 설치 시 발생하는 ARM64 관련 이슈와 해결 방법
Apple의 M1 및 M2 칩셋은 ARM64 아키텍처를 기반으로 하며, 뛰어난 성능을 자랑하지만, 일부 개발 도구나 라이브러리와의 호환성 문제를 겪을 수 있습니다. 특히 npm install을 실행할 때 발생할 수 있는 오류는 많은 개발자들에게 혼란을 줄 수 있습니다. 이번 포스트에서는 M1/M2 Mac에서 npm install 시 발생할 수 있는 ARM64 관련 이슈와 이를 해결하는 방법을 알아보겠습니다. ARM64 아키텍처와 Node.jsApple의 M1, M2 칩은 ARM64 아키텍처를 기반으로 하고 있습니다. Node.js는 기본적으로 시스템의 아키텍처에 맞는 바이너리와 라이브러리를 설치하려고 합니다. 이는 대부분의 경우 문제없이 작동하지만, 일부 오래된 패키지나 더 이상 유지 관리되지 않는 패..
2024.08.29