Skip to content

XCode

엑스코드(Xcode)는 애플이 개발한 OS X의 개발 툴 모음이다. 3.2 버전은 맥 OS X 10.6에 포함되어 있으나 자동으로 설치되지는 않는다. 이전의 버전의 맥 OS X에서는 3.2를 지원하지 않기 때문에 옛 버전을 Apple Developer Connection에서 무료로 받을 수 있다.

엑스코드의 주 프로그램은 같은 이름의 통합 개발 환경이다. 여기에는 애플 개발자 문서와 그래픽 인터페이스를 만드는 데 쓰는 인터페이스 빌더가 포함되어 있다.

엑스코드는 자유 소프트웨어인 GCC의 수정된 버전(GCC, apple-darwin9-gcc-4.2.1, apple-darwin9-gcc-4.0.1)을 포함하고 있고 코코아, 카본, 자바에 대한 다양한 프로그래밍 모델을 포함하여 C, C++, 포트란, 오브젝티브-C, 오브젝티브-C++, 자바, 애플스크립트, 파이썬, 루비를 지원한다. 서드 파티로 GNU 파스칼, 프리 파스칼, 에이다, C 샤프, 펄, 하스켈, D를 지원한다. 엑스코드는 디버거의 백엔드로 GDB를 사용한다.

Categories

License agreement

$ sudo xcodebuild -license

Install commandline tools

$ xcode-select --install

보통 OS업데이트 후 아래와 같은 에러가 발생되는데, 이 경우 위의 명령으로 해결할 수 있다.

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

Compile options

Preprocessor-Options

XCode에서 사용하는 GCC의 전처리 지시자 옵션 (LLVM GCC 4.2 기준)

-x objective-c++
http://gcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Preprocessor-Options.html
소스 언어를 Objective-C++로 지정. ('Other C++ Flags'에 추가하면 된다.)

Command Line Tools

커맨드라인 상으로 컴파일 등의 명령을 사용하고 싶을 경우 Apple 홈페이지에서 별도로 설치해야 한다. 만약 설치만으로 정상적으로 실행되지 않을 경우 아래의 명령을 입력한다.

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/

Keyboard shortcut

XCode 키보드 단축키 목록을 정리한다.

Key

Brief

Remarks (ko)

Common

Shift + Command + F

Show the find navigator

검색 내비게이션바로 전환한다.

Shift + Command + O

Open Quickly (File or Symbol)

빠르게 심볼을 찾아볼 수 있는 대화상자를 연다.

Control + Command + Up (Down)

Header / Source File switch

헤더와 소스파일을 전환한다.

Control + I

Re indent

소스코드의 탭(인덴트; Indent)을 다시 조정한다.

Control + Command + Left (Right)

Go Back (Go Forward)

에디터(Editor)의 포커스가 맞춰진 위치를 되돌아간다.

Debugging

Command + Y

Deactivate Breakpoints

브레이크포인트를 모두 Disable 한다.

Control + Command + Y

Continue (Stop)

디버깅시 프로그램을 재개하거나 일시정지한다.

F6

Step Over

디버깅 커서를 한 단계 진행한다. (단, 콜스택의 깊이를 변동하지 않는다.)

F7

Step Into

디버깅 커서를 한 단계 진행한다.

F8

Step Out

현재의 콜스택에서 빠져나간다.

Build Path

빌드 결과가 저장되는 기본 위치는 아래와 같다.

/Users/{username}/Library/Developer/Xcode/DerivedData/{projectname}-{key}/Build/Products에 위치한다.

Marker

마크를 추가해 주는 기능으로, C#의 #region과 비슷한 기능이다. 코드상에 아래와 같이 추가하면 된다.

#pragma mark -
#pragma mark LABEL

Debugging

디버깅과 관련된 정보를 정리한다.

Memory trace

에러가 발생된 위치의 메모리를 추적하고 싶을 경우 아래와 같이 진행하면 된다.

  • Application (app) tab > Edit Scheme... > Run > Arguments > Environment Variables
    • NSZombieEnabled : YES
    • MallocstackLoggingNoCompact : 1

위의 설정을 마쳤다면 아래와 같이 오류가 발생한 곳의 주소 정보를 얻을 수 있다.

-[CFString release]: message sent to deallocated instance 0x5e4780

하단의 검은색 디버그 구역(Shift + Cmd + Y)의 (gdb)프롬프트 뒤에 다음과 같은 명령 입력

$ info malloc 0x5e4780

또는

$ info malloc-history 0x5e4780

그러면 에러난 곳의 소스코드 위치를 찾을 수 있다.

무선 디버깅

단말기를 USB로 연결한 후, 다음 메뉴를 선택한다:

XCode-Menu-Window-Devices_and_Simulators.png

Connect via network 체크 상자를 선택한다.

XCode-Devices_and_Simulators.png

Provisioning

Troubleshooting

Loading Environment Variables in Xcode

XCode에 환경변수를 추가하고 싶을 경우 Project > Build Settings에서 User-Defined에 추가하면 된다. 참고로 이 곳에 CPATH, LIBRARY_PATH 등을 추가할 수 있다.

XCode Auto Completion

Error: The app icon set named "AppIcon" did not have any applicable content

images.xcassets에 120x120 이미지를 정확한 크기로 넣어야 한다.

NSPOSIXErrorDomain: Operation not permitted

다음과 같은 방법이 있다.

  • DerivedData 폴더 삭제 3
  • 프로젝트 Clean
  • Xcode 재설치 (잘 되던, 낮은 버전으로)
  • Build Setting > VALID_ARCHS 삭제.

참고로, Godot에서 위와 같은 에러가 발생했다면, .csproj 파일의 TargetFrameworks 버전이 배포버전에 해당하는 버전인지 확인해 보면 된다.

warning: pointer is missing a nullability type specifier

다음과 같은 경고가 출력될 때:

<File>: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]

경고를 제거하고 싶다면, -Wno-nullability-completeness 옵션을 추가하면 된다.

Favorite site

XCode 사용 방법 및 용어정리

XCode Plugin

References


  1. Theeye.pe.kr_-_Xcode_No_matching_provisioning_profiles_found.pdf 

  2. Create_an_iOS_certificate_and_provisioning_profile_-by_Nova_Woo-_Medium.pdf 

  3. (XCode) DerivedData 삭제하기