2013년 12월 28일 토요일

[Xcode] Custom Code Snippet 사용하여, 코딩 생산성을 올려 봅시다.

 Xcode에서 init를 치면, 관련추가 함수가 표시되는 Code Snippet이 동작하게 됩니다.
이 코드 스니펫에 내가 원하는 Code Snippet 즉, 내가 만든 '코드 정보'를 추가할 수 있습니다.

코드 스니펫은 뭘까요?

코딩할 때, init를 치면, 추가적으로 표시되는 부분이 있습니다. Code Completion이라고 하는데, 여기에 코드 묶음이나, 함수가 자동으로 추가되는 것이 있습니다.
init를 치면, - (id) init {...}가 자동으로 추가되는 것과 같은것입니다.

여기에 내가 만든 Custom code snippet 을 추가해 봅시다.

이전 블로그에서 Keyboard관련 함수가 있었는데, 이것을 코드 스니펫에 넣어 두고, 필요한 ViewController에서 바로 사용할 수 있도록 설정해 보겠습니다.
일단 Code Snippet Library가 화면에 표시되도록 합니다.
(오른쪽 아래에 표시되는 코드 스니펫 라이브러리)
(메뉴에서 코드 스니펫 라이브러리 보기)

그리고 추가할 코드를 블록으로 선택하고, 드래그해서 코드 스니펫에 넣습니다. 아래 이미지는 이전 블로그에서 추가한 Keyboard Notification관련 코드를 스니펫으로 추가하고 있습니다.
코드를 선택해서 Code Snippet Libarary에 Drag해서 넣기

추가된 것이 표시가 되면, 클릭해서, Edit를 해서, 정보를 수정합니다.

(추가된 스니펫을 수정하기, Edit Custom Code Snippet)

  • Title: 코드스니펫 라이브러리에 표시되는 이름
  • Summary: Title 밑에 설명으로 표시됩니다.
  • Completion Shortcut : 코딩할 때, 이 숏컷을 입력에 대해서 코드스니펫이 표시가 됩니다. init를 입력하면 함수가 나오는 것 처럼.
  • Completion Scopes : 함수 내에서 사용을 하거나, 클래스 메소드에 추가될지 범위를 설정하는 것입니다.
    • All: 모든 경우에 다 표시됩니다.
    • Class Implementation : 클래스의 메소드 입력할 때 표시됩니다. 
    • Code Expression : 메소드 내에서 코드 입력할 때 표시 됩니다.


그럼 코드에서 사용해 봅시다.

위에 Compeltion Scopes를 Class implementation으로 해두어서, 함수 입력 부분에서 DBU를 치면 입력이 나와야 합니다. 아래처럼..
(함수 입력 부분에서 DBU를 치면 내가 입력해둔 코드 스니펫이 표시가 된다. Enter하면 그 코드가 추가된다.)
위와 같이 표시되고, 엔터를 치면, 코드가 추가가 됩니다.

코드에서 토큰입력할 수 있는 코드를 넣어 봅시다.

token labeled Code는 탭키로 입력부분에 바로 이동할 수 있는 토큰 코드 입니다.
(forin 입력시 표시되는 token labeled code)
입력한 코드 스니펫에 token labeled code를 추가합니다.
추가하는 방법은 <# Code #>을 입력하면 됩니다. 아래 처럼.

(코드스니펫에 token labeled code 추가하기)
 이 코드를 직접 사용하게 되면 아래와 같이 표시가 됩니다.
잘 추가해 두면 아주 유용하게 사용할 수 있을 것 같습니다.
(실제 표시된 된것)

이 코드 스니펫은 백업이 될까요? 다른 팀원과 같이 사용할 수는 없을까요?

Xcode를 다시 설치하면, 이 코드 스니펫이 다 사라지지 않을까요? 그리고, 팀원들과 같이 동시에 같은 코스 스니펫을 관리하고 사용할 수는 없을까요?
이거 아시는 분 좀 알려주세요.
저장된 XML을 Backup하고 다시 copy하면 추가가 될까요? 흠...

Custom Code Snippet이 저장되는 위치는?

/Library/Develper/Xcode/UserData/CodeSnippets/...
XML로 저장이 됩니다. 텍스트에디터로 확인을 해보면 아래처럼 나옵니다.
(XML로 저장된 Custom Code Snippet)


참고자료: