Xcode 7.0.1, Alcatraz 설치 후 메뉴가 안 보일 때,


Alcatraz ( http://alcatraz.io/ ) 설치 후 메뉴가 안 보일 때,

  1. Xcode 7.0.1 종료
  2. % defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-7.0.1
  3. % curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh
  4. Xcode 7.0.1 재시작

iOS 개발, CocoaPods, “.h” 파일들을 못 찾을 때 해결 방법


프로젝트에 Pods-{앱명}.[debug/release].xcconfig 이런 파일(텍스트)이 있을 것이다.

HEADER_SEARCH_PATHS = ${SRCROOT}/Pods/Headers/**

를 추가해 준다.

Xcode 의 “Build Settings” 쪽에 보면 “Header Search Paths” 항목에 “…./Pods/Headers/**” 가 추가 되있는 것을 볼 수 있다.

참고 : http://guides.cocoapods.org/using/troubleshooting.html

iOS 개발, CocoaPods 설치 및 프로젝트에 Facebook SDK 추가해 보기


1. CocoaPods(http://cocoapods.org) 설치 (no sudo 모드)

1.1 $HOME/.zshrc 추가


# for GEM
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$GEM_HOME/ruby/2.0.0/bin:$PATH

1.2 cocoapods 설치


% gem install cocoapods --user-install

$HOME/.gem/ 안에 설치가 된다.

1.3 cocoapods 초기화(?)


% pod setup

2. 예) Project 에 CocoaPods를 이용해서 FacebookSDK 설치

2.1 우선 Project 디렉토리로 이동한다.

(MyProject.xcodeproj 와 같이 xcode project 파일 이 있는 곳으로…)

2.2 Podfile 생성


% pod init

2.3 Podfile 수정.

(“pod ‘Facebook-iOS-SDK'” 추가)

% cat Podfile
# Uncomment this line to define a global platform for your project
# platform :ios, '6.0'

target ‘syruporder’ do
pod ‘Facebook-iOS-SDK’
end

target ‘syruporderTests’ do

end

2.4 FacebookSDK 를 받는다.

(Podfile 이 있는 디렉토리, Project 디렉토리에서 하면 된다.)

% pod install
Analyzing dependencies

CocoaPods 0.36.0.rc.1 is available.
To update use: `sudo gem install cocoapods –pre`
[!] This is a test version we’d love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

Downloading dependencies
Installing Bolts (1.1.4)
Installing Facebook-iOS-SDK (3.23.0)
Generating Pods project
Integrating client project

[!] From now on use `syruporder.xcworkspace`.

[!] The `syruporder [Release]` target overrides the `GCC_PREPROCESSOR_DEFINITIONS` build setting defined in `Pods/Target Support Files/Pods-syruporder/Pods-syruporder.release.xcconfig’. This can lead to problems with the CocoaPods installation
– Use the `$(inherited)` flag, or
– Remove the build settings from the target.

% tree -L 1 -d Pods
Pods
├── Bolts
├── Facebook-iOS-SDK
├── Headers
├── Local\ Podspecs
├── Pods.xcodeproj
└── Target\ Support\ Files

Project에 Pods 라는 디렉토리가 생기고 Facebook-iOS-SDK가 잘 설치 된 것을 볼 수 있다.

– 끝 –

iOSDev, zsh을 이용한 pngquant 스크립트.


zsh 의 기능 중 “**/*.png” 를 응용해서 recursive 하게 하위 디렉토리까지 pngquant 를
적용할 수 있게 만듬.

옵션은 각자에 맞게 수정이 필요.
“-s1 –quality 100” 는 적용 시간은 오래 걸리지만 최상 image quality 를 위한 옵션임.

pngquant -s1 --quality 100 **/*.png --ext .png --force

참고 URL :
http://stackoverflow.com/questions/9647920/recursively-batch-process-files-with-pngquant/9649214#9649214

#PasswordBox LastPass를 대체할 PasswordBox


Chrome, Firefox, Safari, IE, Android, iOS 에서 패스워드 25개 저장 한정으로 무료로 사용할 수 있음.
5명 초대하면 무제한으로 사용 가능함.

사용방법 동영상 보면 모바일에서도 자동으로 로그인 해주고 기능은 괜찮아 보인다.

LastPass는 모바일 무조건 Premium 사용자만 가능하니… 25개 한정이지만 괜찮아 보이네요.

PasswordBox 추천 & 다운로드 URL:
http://j.pbox.io/K40ze5HB

이미지

이미지

이미지

이미지

이미지

– 끝 –

 

ObjC, NSString, multi-line quated string


>>> a="""a
... b
... c
... d
... """
>>> a
'a\nb\nc\nd\n'
>>>

Python 에서 여러 줄을 편하게 따옴표 3개로 묶는 것 처럼 혹시 NSString 도 있을까? 하고 찾아 봤는데 못 찾고 대신 아래 링크를 발견했다.

http://multilineobjc.herokuapp.com/

입력 :
<code>
<html>
<body>
<h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>Test Test The web server software is running but no content has been added, yet.</p>
</body>
</html>

출력 :

@" \
<html> \
<body> \
<h1>It works!</h1> \
<p>This is the default web page for this server.</p> \
<p>Test Test The web server software is running but no content has been added, yet.</p> \
</body> \
</html> \
";

wpid-featuredImage.png

iOSDev, ImageOptim, 이미지 최적화, 앱 속도 크기 향상.


“iOSdev, PNG 최적화 스크립트.( pngcrush + advpngidat )” https://lum7671.wordpress.com/2011/11/16/iosdev-png-%EC%B5%9C%EC%A0%81%ED%99%94-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-pngcrush-advpngidat/
글에 이여서 2탄으로 ImageOptim 앱에 대한 사용법이다.

1. 설치

http://imageoptim.com 에서 ImageOptim.app 을 다운 받고 /Applications 에 Drag & Drop 으로 설치를 한다.

2. 사용법

맥에서 앱을 실행하면 아래와 같은 윈도우 창이 뜬다.
이미지 파일을 Drag & Drop 으로 올려 놓으면 동작을 하며
자동으로 처리 이미지는 최적화된 새 이미지로 바꿔지게 된다.

또는

open -a ImageOptim.app *.png

와 같이 터미널에서 편리하게 실행 할 수도 있다.

3. 스크립트


#!/usr/bin/env bash
# -*- coding: utf-8 -*-
#
# 작성자 : 장두현
# 버 전 : 1.1
# 작성일 : 2012-03-08
# 수정일 : 2012-08-21
#
# * 맥 GUI용 : ImageOptim ( http://imageoptim.com/ )
#
# 사용법 :
# ./run_imageoptim.sh
# - 현재 디렉토리 이하 디렉토리 안의 모든 png 를 변환한다.
#
# 참고 : https://github.com/scribd/Xcode-OptimizePNG
#

cust_echo() {
echo -e "$1 $2"
}

APP_IMAGEOPTIM="/Applications/ImageOptim.app"

if [ ! -d "$APP_IMAGEOPTIM" ];then
cust_echo "요구사항체크:" "\nImageOptim.app 이 /Applications 디렉토리에 없습니다.\nImageOptim ( http://imageoptim.com/ ) 에서 어플리케이션을 받아서 설치하세요."
exit 0
fi

process_png()
{
cd $1
open -a ImageOptim.app *.png
}

DIR_PWD=$(pwd)

for directory in $(find $DIR_PWD -type d -print)
do
process_png $directory
done

4. 스크립트 사용법

이하 디렉토리에 있는 모든 png 파일을 ImageOptim.app 으로 최적화 한다.

예) Resource/Images/ 디렉토리 안의 png 파일을 최적화 하려면,
cd Resource
./run_imageoptim.sh

하면 된다.

※ 스크립트는 참고 용 임. 좀 더 다듬으면 거나 자신의 환경에 맞게 고치시길… 🙂

추가 Apple Developer 관련 링크 :
https://developer.apple.com/library/ios/qa/qa1681/_index.html#//apple_ref/doc/uid/DTS40009883

$ xcrun -sdk iphoneos pngcrush \
-revert-iphone-optimizations -q Local.png Local-standard.png

Xcode4, themes, Changing theme for Xcode.


I found out about changing themes for Xcode.
Below themes are found by Google Search. (keyword is “xcode theme”)
Currently my favorite and setting theme is “Spacedust”.

EGOv2

Screenshot :

URL :
http://developers.enormego.com/view/ego_xcode_theme_for_xcode_4_egov2

Installation :

Railscasts

Screenshot:

URL :

Spacedust

Screenshot:

URL :

Installation :
mkdir -p ~/Library/Developer/Xcode/UserData/FontAndColorThemes/;cd ~/Library/Developer/Xcode/UserData/FontAndColorThemes/;curl -O https://raw.github.com/gist/527103/d282b1dad9f99f26f783f8c224cf1f7d6ed29358/Spacedust.dvtcolortheme

iOSDev, CoreData, Warning, Receiver ‘NSManagedObjectContext’ is a forward class and corresponding @interface may not exist


Receiver ‘NSManagedObjectContext’ is a forward class and corresponding @interface may not exist

해결 :

Supporting Files / ProjectName-Prefix.pch 에 #import <CoreData/CoreData.h> 추가

예)
#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <CoreData/CoreData.h>
#endif

Xcode 4.2, TODO, FIXME, ???, !!! 등등 개발 예약어 활용


출처 : http://stackoverflow.com/questions/5891193/xcode-using-fixme-todo

Xcode 개발에서 TODO, FIXME 같은 예약어를 잘 사용하는 것도
버그를 줄이고 실수를 반복하지 않으면서 개발 할 수 있는 한가지 방법일 것 같다.
개인이 개발할때도 유용하지만 여러명이서 협업을 할때 꼭 필요하지 않을까? 생각한다.

Xcode 3.x 대에서는 FIXME가 메소드 안에서도 작동을 했지만,
Xcode 4.x 대로 올라가면서 메소드 안에서는 버그(?)로 바로가기(점프?) 목록에 표시되지 않는다.

여기서 설명은 3가지로 하겠다.

  1. 기본적인 예약어 쓰임.
  2. Xcode 4.2 버전에서 예약어 사용을 위한 스크립트.
  3. #warning, #error 사용.

1. 기본적인 예약어 쓰임.

다음은 프로그램 하면서 쓸 수 있는 예약어 이다.
(이게 전부 인지는 모르겠지만 이정도면 충분하지 않을까?)

[주의] 예약어를 맞게 잘 쓰자!
주석 예약어 : “//TODO:”, “//FIXME:”, “//???:” …
주의깊게 보셔야 할것은 띄어쓰기가 없고 뒤에 콜론이 있는 것입니다.
이것을 보고 메소드 점프 메뉴에 표시되게 됩니다.
형식을 맞춰서 사용하세요.

//MARK: "#pragma mark" 와 비슷
//TODO: 언젠간 하고 말꺼얌!
//FIXME: 이거 고쳐주삼!
//???: 이게 뭘까?

위 스샷을 보면 알겠지만, 메소드 밖에 있는 FIXME는 잘 보여지지만
메소드 안에 있는 FIXME는 보이지 않음을 볼 수 있다.

2. Xcode 4.2 버전에서 예약어 사용을 위한 스크립트.

스크립트 :
KEYWORDS="TODO|FIXME|\?\?\?:|\!\!\!:"
find ${SRCROOT} \( -name "*.h" -or -name "*.m" \) -print0 | \
xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | \
perl -p -e "s/($KEYWORDS)/ warning: \$1/"

2.1 설정 #1

2.2 설정 #2

2.3 컴파일 후 결과

3. #warning, #error 사용.

#warning TODO: 언젠간 하고 말꺼얌!
#error FIXME: 이거 고쳐주삼!

컴파일 시 워닝이 보이거나 컴파일 에러를 일으킴.

추가, #progma mark 도 쓰자.