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 를 사용해서 팝업으로 띄우도록 만들었다.
- 아래쪽의 Automator 를 ~/Library/Services 쪽에 설치를 한다.
% cd ~/Library/Services;ls
ucp2utf8.workflow/
-
Xcode 에서 UCP 문자를 선택하고 오른쪽 버튼으로 메뉴에서 Service 의 ucp2utf8 을 선택한다.
-
팝업에 UTF-8 한글로 변환되서 보여진다.
-
MacOS 메뉴에서 Services 설정을 연다.
-
ucp2utf8 을 Shift + Option + 8 단축키로 지정한다. (이제 선택 후 단축키로 팝업창으로 확인 가능)
-
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 설정
참고 :
빌드에서 사용되는 정의된 환경 변수
- $(SRCROOT) : 소스 최상위 디렉토리
- $(PROJECT_NAME)
- $(PROJECT_DIR) : 보통 $(SRCROOT) 와 같음.
참고 :
- Build settings reference - Xcode Help
- How do I print a list of “Build Settings” in Xcode project? - Stack Overflow
Add Breakpoint for All Objective-C Exceptions
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 앱
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 마우스 사용으로 발생 할 수 있을 것 같음. (미확인)