2013년 3월 20일 수요일

iOS 프로그래밍 팁 - Custom URL Scheme

custom URL scheme 기능은

사파리에서 특정 URL 을 입력하면 앱이 활성되게 할수 있다.

아래 apple 사이트에서

Implementing Custom URL Schemes 

항목을 참고하면 이해가 갈것이다.


http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/AdvancedAppTricks/AdvancedAppTricks.html

여기를 참조 하여 xxxxx-info.plist 파일을 수정 하는 방법을 쉽게 이해 할수 있다.


http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html


실제로 xxxxx-info.pilist 파일에 내용을 확인 해보면
다음과 같다.


<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>sparrowapps</string>
</array>
</dict>
</array>


사파리에서  주소창에 sparrowapss://를 입력 하면 해당 앱이 활성된다.

2013년 3월 14일 목요일

2007 lenovo Thinkpad T60의 부활

이 글을 T60으로 쓴다면 스크린 샷 이랑 해서 좀 더 자세히 쓸수 있겠지만
이글은 2012 mac mini로 작성하고 있다.

2007년 당시 170만원에 육박하는 가격으로 lenovo Thinkpad T60을 구입했다.
지금은 2013년 3월이니까 벌써 6년이 지났다.

당시의 최신의 CPU와 엄청난 용량의 메모리 최고의 성능이라 자부 했지만
지금은 그냥 오래된 노트북이다.

2012 late mac mini 의 엄청난 속도에 비하면 느리고 답답하다.

인터넷 쇼핑을 하기에도 부족한 성능이다.

메롬 플랫폼은 램이 2GB를 두개 꽂아도 3GB로 인식 한다.
OS가 64bit여도 소용이 없다.

그래서 1GB, 2GB를 꽂아서 T60과 구형 맥미니를 사이좋게 3GB 머신으로 만든지
오래 되었다.

메모리가 3GB나 되지만 느린 120GB 5400rpm 하드 디스크 그리고 CPU로 인해 답답하다.

시스템 메모리를 2기가로 줄이고 1기가를 램 디스크로 설정해서

인터넷 익스플로러의 temp를 램 디스크로 설정
램 디스크에 readyboost 설정
환경 변수 TEMP와 TMP의 경로도 램 디스크로 설정

이렇게 설정을 하니 인터넷 속도가 훨씬 빨라 졌다.

잠시 SSD를 구매할까 고민했던,..
아니면 버리고 새로 노트북을 장만할까.. 고민 했던...
그냥 더 쓰자..
어짜피 난 mac을 쓰고
이건 그냥 인터넷 쇼핑 용이니까...



2013년 2월 14일 목요일

iOS 프로그래밍 팁 - NSLog() 사용시 릴리즈 빌드시 제거하기

NSLog() 자체가 릴리즈 빌드에서 저절로 사라 질까?

그랫으면 좋으련만

그럼 NSLog()를 사용한곳 앞뒤로 #ifndef ~ #endif 로 해야 하나?

아니면 NSLog()를 매크로로 만들고 DebugLog() ?

NSLog()를 사용한 곳을 모두 replace 해서 DebugLog()로 바꿔야 하나 ?

가장 간단한 해답을 찾았다.

그리고 DEBUG=1  같은 것을 설정 할 필요도 없이


앱이름-Prefix.pch 

파일에

#ifndef __OPTIMIZE__
#    define NSLog(…) NSLog(__VA_ARGS__)
#else
#    define NSLog(…) {}
#endif


를 추가해주면 된다.




2013년 1월 5일 토요일

iOS 프로그래밍 팁 - UIActivityIndicatorView 가 에니메이션 되는 동안 UI 잠그기

어떤 버튼이 네트워크 통신을 시도 한다고 할때

버튼을 누르면 네트워크 전송 코드가...

네트워크 응답에 관련된 함수들이 대기 할것이다.

UIActivityIndicatorView를 이용해서 에니메이션을 진행 하고
네트워크 수신이 완료되거나 에러가 나거나 처리가 완료 되면

에니메이션을 중지 할 것이다.

그런데 버튼을 누르고 바로 또 누르면
또는 어떠한 UI 동작을 한다면..

문제를 일으킬 것이다.

인디케이터 에니메이션이 동작 하는 동안 UI 동작을 막도록 하려면

에니메이션 시작에서

self.view setUserInteractionEnabled:NO];
    [webActInd startAnimating];

끝에 다시 

webActInd stopAnimating];
    [self.view setUserInteractionEnabled:YES];

이렇게 하여 UI 동작을 막을 수 있다.

2012년 12월 24일 월요일

iOS 팁 - 프로그래스바를 가지고 있는 AlertView


- (void)createProgressionAlert
{
    progressAlert = [[UIAlertView alloc] initWithTitle:@"리소스 다운로드" message:@"중요 리소스를 다운로드 받고 있습니다. 잠시 기다려 주세요." delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    // Create the progress bar and add it to the alert
    progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(30.0f, 90.0f, 225.0f, 90.0f)];
    [progressAlert addSubview:progressView];
    [progressView setProgressViewStyle:UIProgressViewStyleBar];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(30.0f, 100.0f, 225.0f, 40.0f)];
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor whiteColor];
    label.textAlignment = UITextAlignmentRight;
    label.font = [UIFont systemFontOfSize:14.0f];
    label.text = @"";
    label.tag = 1;
    [progressAlert addSubview:label];
    
    [progressAlert show];
    [progressAlert release];
}


progressView 는 헤더 파일에서 선언 한다.

label에 접근 하기 위해서 는

UILabel *label = (UILabel *)[progressAlert viewWithTag:1];

이렇게 하면 접근 가능 하다.

네트워크에서 무언가를 내려 받거나 할 때 진행 그래프 표시용 으로 사용하면 된다.

iOS팁 약관 동의 같은 긴 문서를 보여 줄때


UITextView *txtEULA = [[[UITextView alloc] initWithFrame:CGRectMake(45,145,225, 320) autorelease];
로 잘 붙여 넣고

setText를 하면 된다.

그럼 그 긴 문장을 다 쳐 넣어야 하느냐?


- (NSString *)agreeText {
    
    NSString *str = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource: @"agree" ofType: @"txt"] usedEncoding:nil error:nil];
    return str;
}




[txtEULA setText:[self agreeText]];


agrreText 메서드는
앱에서 파일로 읽어 들인다.

프로젝트에 agree.txt파일을 추가 하고

파일에서 내용을 얻어다가 txtEULA에 넣어 주면 된다.




2012년 12월 10일 월요일

mountain lion에서 Windows 한글 text파일 열기 문제

아직도 smi파일은 windows 에서 windows dos 인코딩 (949 ) 로 인코딩 되어 잇는 파일이 많다.
osx는 UTF-8이라서 기본 설정된 상태에서는 이러한 텍스트 파일을 osx에서 열면
먼 글인지 알아 볼수가 없다.

TextWrangler는 앱으로 파일을 열어 보면 알아 볼수가 없다.
이프로그램을 사용해본 사람이라면 인코딩 환경 설정에서 다음과 같이 추가 할 것이다.

하지만 그래도 효과가 없다.

어째 서지 분명히  한글 관련된 인코딩을 모두 추가 했는데... 

여러 방법을 다 동원해도 안된다.

마운틴 라이언에 버그인가?

나는 라이언에서 분명 TextWrangler로 잘 열고 UTF-8로 변환도 잘했는데....

해답은
마운틴 라이언에 기본 텍스트 편집기에 환경설정에서
파일 열 때를 클릭
한국어 인코딩을 선택해 주어야 한다.

아무래도 TextWrangler는 내부 코드가 마운틴 라이언에 텍스트 편집기에 의존적 인것 같다.

이렇게 설정 하고 나니 도스용 한글 ( cp-949) 인코딩된 텍스트 파일이 보기 좋게 열린다.