in iPhone

XCode > 시간을 절약하는 5가지 방법 – Snippet(1)

iPhone 애플리케이션을 개발한지 어언 5년? 오랜 시간이 지났지만 정말 단축키를 사용하지 않았던거 같습니다. 부분적으로 아주 조금만 사용했읍죠.

예를 들어 Cmd+1, Cmd+2 정도…

영어 공부를 목적으로 캐나다를 한 일년 정도 다녀오고 (물론 개발도 꾸준히 했죠.) Clojure1라는 언어에 잠깐 미쳐지냈던 지라 생각보다 iPhone에는 많은 시간을 투자 하지 못했었습니다.

회사에서 따분한 시간들을 보내면서 잠깐 동안 과거에 어떻게 시간을 보냈는지, 어떻게 하면 시간을 절약하고 어떻게 하면 시간을 유용하게 사용할 수 있을 지를 생각하고 또 생각했습니다.

제가 사실 Clojure라는 언어에 시간을 보냈던 이유는 함수형 언어라는 특징과 정말 코드가 간단하고 미래에 많은 사람들이 그리고 기존에 있던 언어들이 함수형 언어와 비슷해지거나 아니면 함수형 언어를 사용되지 않을까 해서였습니다.

물론 지금도 생각은 바뀌지 않았습니다.

서술이 너무 길었던 거 같습니다.
아래의 내용은 NSCookbook이라는 사이트 중 하나의 포스트를 발 번역/개작한겁니다.


시간이 흐르고 작업을 하다보면 때로는 좌절하고는 합니다. 저처럼… 이유인 즉슨 소비하지 않아도 될 시간을 낭비해서이죠. 개발자에겐 시간이 금이라고 생각됩니다.

하지만!! 개발자에게 있어 툴이란 정말 중요하죠. XCode는 시간을 절약할 수 있는 방대한 기능을 제공합니다. 그래서 용량도 참 크죠.

이 포스터에서는 XCode의 새로은 특징과 이전에 있었던 기능들을 되새겨 보는 시간을 가지도록 하겠습니다.

1.Snippets

XCode Snippets을 사용하면 단편적인 설명과 자동완성의 기능을 사용할 수 있습니다.

XCode가 발전했음에도 불구하고 Snippets은 이전의 것과 같습니다. 그래서 이번에 새롭게 생성하고 사용하는 방법을 배워보도록 하겠습니다.

기존에 만들어져있는 메서드의 경우 모든 개발자가 동일시 하게 사용하는 표준문안으로 작성되었습니다.

구현부인 .m파일에서 init을 입력 후 enter를 입력해보시면 아래와 같이 생성된 것을 확인 할 수 있습니다.

참조 1
참조 2

XCode에서는 위와 같이 자동완성을 제공하는 Snippets기능이 있습니다.
View > Utilizes > Show Code Snippets Library 또는 control+option+cmd+2 단축키를 누르면 오른쪽 하단에 창하나가 보여지는 것을 확인 할 수 있습니다.

typedef’s, coreData helpers, GCD helpers 등 여러가지를 보실 수 있습니다.

자 이제 새로운 하나 dispatch_after라는 코드블럭을 추가해보도록 합시다.

생성 방법은 구현부에서 마음에 드는 블럭을 코드 Snippets Libarary 창으로 드래그 & 드롭 해주시면 됩니다.

Sample Code
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
//code to be executed on the main queue after delay
});

또는 **dispatch_once 코드 블럭을 넣어봅시다.

Sample Code 2
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//code to be executed once
});

코드를 넣게 되면 맨 하단에 Snippet이 생성된 것을 확인 할 수 있습니다.
새로 생성된 Snippet을 클릭해주시면 아래와 같은 필드들을 보실 수 있습니다.

  • Title pragma mark같은 의미있는 이름을 적으세요.
  • Summary 작은 설명 부분입니다. 필수 내용은 아니니 Skip할 수있습니다.
  • Platform iOS 또는 OS X 아니면 둘다를 지원할 지 선택 할 수 있습니다.
  • Language 언어 선택 부분입니다. 저희는 Objective-C를 사용하죠.
  • Completion Shortcut 이 부분은 정말 중요한 부분입니다. 자동완성 키워드인입니다. 예를 들어 mark라고 지정을 했다고 가정하고 m을 입력 할 시 자동완성 팝업을 제공하는 것을 확인 할 수있습니다.
  • Completion Scope 어느 부분에서 제공을 할 지 선택하는 부분입니다. 예를 들어 선언부에서만 보이고 싶다면 선언부 또는 구현부를 선택해주시면 됩니다.

이제 다 되었으니 Done을 누르고 다음에 입력한 키워드를 입력해주세요.
코드 완성이 된 것을 확인하셨나요?

이게 정말 시간을 절약할 수 있는 혜택 아닐까요? 이제 좀 더 유용한 자기만의 snippets을 만들어보세요.

참조 3

여기서 한가지 팁 더! paragma mark snippet을 입력하지 않은 상태에서 위와 같이 버블 창이 떠서 이름을 입력받을 수 있다면 더 좋지 않을까요?

이건 좀더 어려운 부분이 될수도 있지만 정말 필요한 부분이기도 합니다.
자 입력 받을 수 있도록 추가해보도록 하죠.

  • Snippets Library에서 추가한 Snippet을 열고 Edit를 눌러주세요.
  • 버블창안에 입력창을 만들기 위해서는 XCode Snippeit Library가 인식할 수 있는 키워드가 필요합니다. 그건 꺽쇠'<#’,’#>’로 구현되어 있으며 아래와 같을 수 있습니다.
    <#input text#>
  • pragma mark snippet을 위해 저희는 아래와 같이 <#name#>을 문장 끝에 추가하도록 하겠습니다.

참조 4

이게 전부입니다. 아래는 다른 Snippets가 되겠습니다. 잘 이용하면 더욱 더 시간을 절약할 수 있습니다.

로그 메서드 (logm)
NSLog(@”%@ – %@”, NSStringFromClass([self class]), NSStringFromSelector(_cmd))
지역화 메서드 (loc)
NSLocalizedString(@”<#string#>”, @”<#message#>”)

저는 또한 다른 코드 블럭들을 넣어놨습니다. 예를 들어 CGRect를 위한 logr, float를 위한 logf같은 것들을 말이죠.

다음 포스트에서는 Method Auto-completion에 대해서 발번역을 해보도록 하겠습니다.

수고하셨습니다.


  1. Rich Hickey라는 사람이 만들었으며, 이 언어는 기존 Lisp라는 언어에 영향을 받은 언어로써 기존 자바라이브러리를 사용 할 수있고 JVM 위에서 동작한다. 

Write a Comment

Comment