Xcode Memo

Posted on 2018-10-18(목) in Xcode

UCP to UTF-8, Automator 를 활용

Xcode 에서 NSLog결과 한글이 UCP 로 아래와 같이 나온다.

message = "\Uc874\Uc7ac\Ud558\Uc9c0 \Uc54a\Ub294 \Ud68c\Uc6d0\Uc785\Ub2c8\Ub2e4.";

이것을 UTF-8로 변환해서 보도록 Automator 를 사용해서 팝업으로 띄우도록 만들었다.

  1. 아래쪽의 Automator 를 ~/Library/Services 쪽에 설치를 한다.
% cd ~/Library/Services;ls
ucp2utf8.workflow/
  1. Xcode 에서 UCP 문자를 선택하고 오른쪽 버튼으로 메뉴에서 Service 의 ucp2utf8 을 선택한다. SelectText001_png

  2. 팝업에 UTF-8 한글로 변환되서 보여진다. SelectText002_png

  3. MacOS 메뉴에서 Services 설정을 연다. MacOsMenu001_png

  4. ucp2utf8 을 Shift + Option + 8 단축키로 지정한다. (이제 선택 후 단축키로 팝업창으로 확인 가능) Servies001_png

  5. Automator 파일 : ucp2utf8.workflow.txz

% als ucp2utf8.workflow.txz
drwxr-xr-x user001/staff     0 2018-04-06 08:01 ucp2utf8.workflow/
drwxr-xr-x user001/staff     0 2018-04-06 08:01 ucp2utf8.workflow/Contents/
drwxr-xr-x user001/staff     0 2018-04-06 08:01 ucp2utf8.workflow/Contents/QuickLook/
-rw-r--r-- user001/staff 154402 2018-04-06 08:01 ucp2utf8.workflow/Contents/QuickLook/Preview.png
-rw-r--r-- user001/staff   8528 2018-04-06 08:01 ucp2utf8.workflow/Contents/document.wflow
-rw-r--r-- user001/staff    506 2018-04-06 08:01 ucp2utf8.workflow/Contents/Info.plist

BridgingHeader, Objective-C를 Swift에서 사용하기 위한 Bridge 설정

BridgingHeader

참고 :

빌드에서 사용되는 정의된 환경 변수

  • $(SRCROOT) : 소스 최상위 디렉토리
  • $(PROJECT_NAME)
  • $(PROJECT_DIR) : 보통 $(SRCROOT) 와 같음.

참고 :

Add Breakpoint for All Objective-C Exceptions

Add Breakpoint

po $arg1

Convert ‘Unicode Code Point’ to UTF-8

test.py

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

foo = '\Uc11c\Ubc84\Uc5d0 \Ubb38\Uc81c\Uac00 \Ubc1c\Uc0dd\Ud588\Uc2b5\Ub2c8\Ub2e4.'
print foo
foo = foo.decode('raw_unicode_escape')

foo = foo.lower() # replace('\U', '\u')
print foo

foo = foo.decode('unicode_escape')
print type(foo)

foo = foo.encode('utf-8')
print type(foo)
print foo

첫 번째 테스트

9번째 줄 foo = foo.decode('raw_unicode_escape') 로 아래와 같은 에러가 발생한다.

% ./test.py
\Uc11c\Ubc84\Uc5d0 \Ubb38\Uc81c\Uac00 \Ubc1c\Uc0dd\Ud588\Uc2b5\Ub2c8\Ub2e4.
Traceback (most recent call last):
  File "./test.py", line 10, in <module>
    foo = foo.decode('raw_unicode_escape')
UnicodeDecodeError: 'rawunicodeescape' codec can't decode bytes in position 0-5: truncated \uXXXX

두 번째 테스트

9번째 줄 foo = foo.decode('raw_unicode_escape') 주석 처리.

% ./test.py
\Uc11c\Ubc84\Uc5d0 \Ubb38\Uc81c\Uac00 \Ubc1c\Uc0dd\Ud588\Uc2b5\Ub2c8\Ub2e4.
\uc11c\ubc84\uc5d0 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
<type 'unicode'>
<type 'str'>
서버에 문제가 발생했습니다.

정리

  • Unicode Code Point 의 구분문자(?)는 \u 이다.
  • \U 대문자로 하면 에러가 발생한다.

Info.plist 에서 버전 가지고 오기.

{{APP NAME}}/scripts/getVersion.sh

#!/usr/bin/env sh
PWD=$(dirname $0) # 스크립트 절대 위치
/usr/libexec/PlistBuddy -c "Print:CFBundleShortVersionString" $PWD/../{{APP NAME}}/Supporting\ Files/Info.plist

On Demand Resource

  • 이미지와 같은 리소스 선택
  • 오른쪽 설정 부분에서 “On Demand Resource Tags” 설정
  • 확인
    • Project - TARGETS - Resource Tags 에서 추가 된 것을 확인 가능하다.

문서 메모 (Xcode v8.2.1 기준)

주석

// MARK:
// TODO:
// ???:
// !!!:

컴파일

#warning 컴파일 후 warning 표시, jump 가능

pragma

#pragma mark - WebView

XOS 한국어 환경에서 English 환경으로 Xcode 열기

Xcode 에서 한국어 환경으로 개발에 어려움이 있기도 합니다. 예를 들어 폰트 선택에서 폰트 굵기 종류를 선택할 때 모호한 한글 번역으로 어떤 것을 선택해야 할지 어려움이 있습니다.

상황

이것을 해결하려고 노력을 해봤지만 쉽지 않았다. 그런데 “Language Switcher”라는 앱이 이 문제를 해결해 주었다.

Command 로 English 환경으로 Xcode 열기

% open AnneNew.xcworkspace --args -AppleLanguages '(en)'

Language Switcher 앱

Language Switcher

Xcode에서 Apple SD Gothic Neo 폰트 선택

폰트 선택

단축키

단축키 찾기

Preferences… 의 Key Bindings 의 filter 에서 ‘command j’ 같은 검색이 가능하다.

Search Project & Navigation

Select -> Command + 'e' -> Command + Shift + 'f' + enter
Control + Command + 'g' # navigation

Move Code

Select Part -> Command + Option + '[' or ']'

Edit All in Scope

Select -> Command + 'e' -> Command + 'g' # Search
Control + Command + 'e'

Add Documentation Comment / Class, Method Comment 단축키

Command + Option + '/'

Comparsion 에서 수정된 부분으로 이동 단축키

화살표키 위/아래 
왼쪽/오른쪽을 나누는 중앙의 분리하는 부분을 클릭 후 화살표키를 위/아래로 누르면
수정된 부분으로 jump 한다.

[미해결] “Process launch failed: timed out trying to launch app” 에러

컴파일 후 설치, 실행에서 time out 문제 발생. 
문제 해결을 위해 찾는 중...
USB 키보드와 USB 마우스 사용으로 발생 할 수 있을 것 같음. (미확인)