일모도원(日暮途遠) 개발자
[XCode] 소스코드에서 디버그 모드와 릴리즈 모드 구분하기 본문
디버드모드와 디버그 모드가 아닌것(보통은 릴리즈모드)를 구분하는것은 Build Settings의 Preprocessor Macros를 보면 알수 있다.
(가끔 GCC_PREPROCESSOR_DEFINITIONS라는 말도 쓰는데 이는 Preprocessor Macros는 같은걸 말한다.)
Macro를 정의하는값은 최종적으로 Resolved에 있는것이 사용된다.
Macro는 여러곳에서 정의할수 있는데, 그 순서는 다음과 같다. Resolved <- Target <- xcconfig <- Project <- iOS Default
예를 들어 DEBUG 매크로는 프로젝트를 맨처음 생성하면 생긴다.
teset1이라는 프로젝트를 생성시 "test1" 프로젝트쪽에 보면 DEBUG=1이라고 정의된걸 볼수 있다.
내가 사용하는 타켓(AraPlayer_English)을 보면 DEBUG=1이라는게 보이는데, 더블클릭해서 보면
DEBUG=1은 안보이고 $(inherited)라는게 보인다.
$(inherited)는 이름 그대로 상속받은 값을 쓰겠다는 거다.
위에서 설명한대로 Macro는 여러곳에서 정의할수 있는데, 그 순서는 아래그림과 같다.
즉 AraOne이라는 프로젝트에서 이미 DEBUG=1이 있으므로 AraPlayer_English Target에서는 따로 DEBUG라는 매크로를 정의해주지 않아도 부모에 정의되어 있는 DEBUG매크로를 쓰겠다는 얘기다.
실제 코드에서는 아래처럼 사용하면 된다.
func foo(){
#if DEBUG
//DEBUG시에만 실행되는 코드
#else
#endif
}
참고 : 타겟을 여러 개를 만들지 않고, 단일 타겟으로 여러 환경을 구성하는 것이 가능
https://minsone.github.io/ios/mac/xcode-xcconfig
'개발통합환경(IDE) > XCode' 카테고리의 다른 글
[XCode] 딴 사람 프로젝트 열기 오류 케이스 1번째 (0) | 2023.09.05 |
---|---|
[XCode] Console창에서 변수 값 보기 (0) | 2023.07.09 |
[XCode] plist 이름 바꾸기 (0) | 2022.09.18 |
[XCode] 소스코드의 여러 문자열 한번에 변경하기 (0) | 2022.09.02 |
[XCode] xib파일과 ViewController연결하기 (0) | 2022.09.01 |