1. 문제발생
갑자기 코드에디터의 컬러링이 일부가 안되기 시작했다.
특정 파일 하나만 그런 것이다.

2. 문제내용
각종 라이브러리와 관련된 코드들이 색이 없이 기본 글자색으로 나와서 보기도 힘들고 눈도 아파서 해결책을 찾아보았는데 다 안된다.

3. 원인확인
그러다 오늘 SVN 업데이트중 해당 파일이 다른 경로에 있는 것을 보고 이상하게 생각했다.
en.lproj 에 있는걸 보니 Localization 과 관련이 있어보였다.
어제 다국어 처리를 하면서 해당 파일에도 모르고 언어를 추가하였나보다.

4. 문제해결
Localization 을 모두 제거해버리니 다른 소스파일들과 같은 위치로 오면서 컬러링도 동작하게 되었다. 

enum CFSocketCallBackType {

kCFSocketNoCallBack = 0,
kCFSocketReadCallBack = 1,
kCFSocketAcceptCallBack = 2,
kCFSocketDataCallBack = 3,
kCFSocketConnectCallBack = 4,
kCFSocketWriteCallBack = 8
};
typedef enum CFSocketCallBackType CFSocketCallBackType;

상수
kCFSocketNoCallBack

어떠한 활동도 콜백이 구성되지 않는다.

iOS 2.0 이상에서 지원.

CFSocket.h 에 선언됨.

kCFSocketReadCallBack

읽을 수 있는 자료가 있거나 새로운 연결 요청이 있을 경우 콜백이 호출된다. 자료는 자동으로 읽어지지 않는다; 콜백은 자료를 읽어야만 한다.

iOS 2.0 이상에서 지원.

CFSocket.h 에 선언됨.

kCFSocketAcceptCallBack

새로운 연결이 자동으로 수락되고 자식 소켓의 CFSocketNativeHandle 포인터를 포함한 데이터와 함께 콜백이 호출될 것이다. 이 콜백은 listening 소켓에서만 사용가능하다.

iOS 2.0 이상에서 지원.

CFSocket.h 에 선언됨.

kCFSocketDataCallBack

백그라운드에서 수신된 데이터를 읽고 이를 포함한 CFData 개체와 함께 콜백이 호출 될 것이다.

iOS 2.0 이상에서 지원.

CFSocket.h 에 선언됨.

kCFSocketConnectCallBack

CFSocketConnectToAddress 또는 CFSocketCreateConnectedToSocketSignature 호출로 백그라운드에서 연결을 시도할 경우 연결이 되었을 때 이 콜백은 이루어집니다. 이경우 데이터 인자는 NULL 이거나, 연결이 실패했을 경우  SInt32 포인터 에러 코드입니다. 이 콜백은 특정 소켓에 대하여 두번 이상 발생하지 않습니다.

iOS 2.0 이상에서 지원.

CFSocket.h 에 선언됨.

kCFSocketWriteCallBack

소켓이 쓰기가능할 때 콜백이 호출된다. 이 콜백은 소켓을 통해 대용량의 데이터를 보내고난 뒤 커널 버퍼에 여유가 생겼을 때 알림을 받기 원할때 유용하다.

iOS 2.0 이상에서 지원.

CFSocket.h 에 선언됨.


1. Storyboard 가져오기

"[iOS] 기기에 맞는 UIStoryboard 찾기" 참고


2. ViewController 생성

이전
[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

변경
스토리보드에서 해당 ViewController 의 Identifier 를 "ViewController" 로 설정
[storyboard instantiateViewControllerWithIdentifier:@"ViewController"];




'Mobile > iOS' 카테고리의 다른 글

[iOS] CoreData 추가하기  (0) 2012.02.24
[iOS] CFOptionFlags  (0) 2012.02.21
[iOS] 기기에 맞는 UIStoryboard 찾기  (0) 2012.02.20
[iOS] 함수 포인터를 이용하여 핸들러 만들기  (0) 2012.02.20
[iOS] iOS Application Life-cycle  (0) 2012.02.17

1. 스토리보드 이름 찾기

[ProjectName]-Info.plist 파일에서 확인할 수 있다.

iPhone 은 "Main storyboard file base name", iPad 는 "Main storyboard file base name (iPad)" 에서 확인할 수 있다.


2. 기기에 맞는 스토리보드 이름 가져오기

NSString *storyboardName = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad? @"MainStoryboard_iPad": @"MainStoryboard_iPhone");


3. 스토리보드 찾기

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];

typedef void (^Handler)(int result);
Handler handler = ^(int result) {
    NSLog(@"Handler called by result: %d", result);
};

'Mobile > iOS' 카테고리의 다른 글

[iOS] Storyboard 사용시 ViewController 의 initWithNibName 대응법  (0) 2012.02.20
[iOS] 기기에 맞는 UIStoryboard 찾기  (0) 2012.02.20
[iOS] iOS Application Life-cycle  (0) 2012.02.17
[iOS] boolean type  (0) 2012.02.17
[iOS] Multitasking  (0) 2012.02.17

상태변화시 호출되는 메서드를 정리해보았다.


 

'Mobile > iOS' 카테고리의 다른 글

[iOS] 기기에 맞는 UIStoryboard 찾기  (0) 2012.02.20
[iOS] 함수 포인터를 이용하여 핸들러 만들기  (0) 2012.02.20
[iOS] boolean type  (0) 2012.02.17
[iOS] Multitasking  (0) 2012.02.17
[iOS] Gesture Recognizer  (0) 2012.02.16

bool 을 치면 Code Completion 에 "BOOL", "bool", "Boolean", "boolean_t" 네개가 뜬다.
궁금해서 찾아보았다.

1. BOOL (iPhoneOS5.0 > usr/include > objc > objc.h)
   typedef signed char BOOL;

2. bool (stdbool.h)
    #define bool _Bool

3. Boolean (iPhoneOS5.0 > usr/include > MacTypes.h)
    typedef unsigned char Boolean;

4. boolean_t (iPhoneOS5.0 > usr/include > mach > arm > boolean.h)
    typedef int boolean_t;


_Bool 은 Symbol 을 찾을 수 없다고 나와 무엇인지 모르겠다.

'Mobile > iOS' 카테고리의 다른 글

[iOS] 함수 포인터를 이용하여 핸들러 만들기  (0) 2012.02.20
[iOS] iOS Application Life-cycle  (0) 2012.02.17
[iOS] Multitasking  (0) 2012.02.17
[iOS] Gesture Recognizer  (0) 2012.02.16
[iOS] Touches  (0) 2012.02.16

멀티태스킹을 사용하지 않고 바로 종료하기

Supporting Files - Info.plist 에 "Application does not run in background" 를 YES 로 설정. 없으면 추가.


멀티태스킹 지원 체크하기

- (bool)multitaskingAvailable
{
    UIDevice *device = [UIDevice currentDevice];
    if ([device respondsToSelector:@selector(isMultitaskingSupported)])
        return [device getMultitaskingSupported];
    return NO;
}


UIBackgroundModes

백그라운드 실행형태.
Supporting Files - Info.plist 에 "Required background modes" 키와 값을 추가한다.

1. audio : 백그라운드시 멈추지 않는다.
2. location : OS 에 의해 주기적으로 깨어난다.
   applicationDidEnterBackground 에서 startMonitoringSignificantLocationChanges 를 호출하여 정확도를 낮춰 배터리 소모를 줄이도록 한다.
3. voip : OS 가 네트워크 소켓을 감시하다가 전화가 걸려오면 깨운다.


'Mobile > iOS' 카테고리의 다른 글

[iOS] iOS Application Life-cycle  (0) 2012.02.17
[iOS] boolean type  (0) 2012.02.17
[iOS] Gesture Recognizer  (0) 2012.02.16
[iOS] Touches  (0) 2012.02.16
[iOS] 회전  (0) 2012.02.08
[주의] Apple 사의 Mac 기기에만 해당되는 내용입니다. (해킨토시는 하지마세요)


구매 한달정도 된 맥북 프로에서 USB 포트를 사용할 일이 생겼는데 앞쪽 USB 포트는 인식이 잘 되나 뒤쪽 USB 포트는 무엇과도 연결이 되지 않는다. 애플 고객센터와 문의 후 간단하게 SMC 초기화라는 것을 하고 해결이 되었다.
아래는 애플 고객센터에서 전화로 안내받은 초기화 절차와 메일로 받은 관련 링크다. 상담시에 SMC 초기화 후에도 되지 않으면 PRAM 초기화를 해보고 그래도 안되면 센터를 찾아야 한다고 했다.

SMC 초기화 방법
 

1. 맥북을 종료한다.
2. SHIFT + CTRL + OPT 를 누른 상태에서 전원을 누른다.
3. 5초 후 전원에서 손을 뗀다.
4. 나머지 키에서도 손을 뗀다.
 




'Mobile' 카테고리의 다른 글

[git] git 로 소스 받기  (0) 2012.03.27
[Mac] 런치패드 (LaunchPad) 아이콘 삭제  (0) 2012.03.15
[SQLITE] 명령어  (0) 2012.02.15
[SVN] 명령어  (0) 2012.02.14
[xcode] Organizer 에 SVN 등록하기.  (0) 2012.02.10
UITapGestureRecognizer : 1회 이상의 잠깐 누르기 인식.
UIPinchGestureRecognizer : 핀치 줌 인식. scale, velocity.
UIPanGestureRecognizer : Dragging, Panning (휘젓기) 인식.
UISwipeGestureRecognizer : 미는 동작 인식.
UIRotationGestureRecognizer : 회전 제스처 인식. rotation, velocity.
UILongPressGestureRecognizer : 1개 이상의 길게 누르기 인식.

주의: Pan 과 Swipe 가 동시에 적용되었을 시 대부분의 Swipe 동작은 Pan 으로 인식 될 것이므로 동시에 사용시 주의 필요.

'Mobile > iOS' 카테고리의 다른 글

[iOS] boolean type  (0) 2012.02.17
[iOS] Multitasking  (0) 2012.02.17
[iOS] Touches  (0) 2012.02.16
[iOS] 회전  (0) 2012.02.08
[iOS] 키보드 숨기기  (0) 2012.02.08

+ Recent posts