2011년 7월 25일 월요일

snow leopard & lion multi booting

mac mini 에 결국 라이온으로 클린 설치를 했다.

약간 느낌이 좋아진듯 하다.
스노우 보다 느리긴 한대 그래도 여러 기능들 특히 전체화면 이랑 mission control등등

여러 유혹 그리고 10.7.1 패치가 이 약간 느려진 UI 퍼포먼스를 올려주지 않을까 기대감..

등등으로 snow leopard 클린설치냐, lion 클린설치냐 고민하다가 그냥 라이온으로 엎었다.

이것저것 세팅 하고 타임머신이란것도 함 써볼까 해서

디스크 유틸리티로 파티션을 나누고 타임머신을 세팅했다.

파티션 나누는것도 처음 해본일이다. 부트캠프가 알아서 윈도우 파티션 생성 해주던거 외에

디스크 유틸리티로 나눠보기는 처음

문득 생각이 난건 그럼 다른 파티션에 OSX를 설치하면
부팅 할때 option키로 부팅 디스크를 선택 해서 부팅 하거나

startup disk설정 해서 부팅 할수 있지 않을까? 이런 생각이 문득... 떠올랐다.

구글링하니.. 정말 있다.

http://osxdaily.com/2011/03/12/how-to-install-dual-boot-mac-os-x-10-7-lion-and-10-6-snow-leopard/

일단 500GB에 lion/backup으로 세팅 해서 사용중인데..
패치가 나와도 느리고 작업하기가 정말 곤란 하다고 느껴지면..

snow로 엎고 다른 파티션에 라이온을 설치 한번 해봐야 겠다.

2011년 7월 20일 수요일

wave파일을 효과음으로 내는 허접한 클래스


#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>

@interface SPSoundEffect : NSObject {
    
}
-(void) playWithWavFileName:(NSString *)fileName;

@end




#import "SPSoundEffect.h"


@implementation SPSoundEffect


- (void)playWithWavFileName:(NSString *)fileName
{
    NSString *fpath = [[NSBundlemainBundle] pathForResource:fileName ofType:@"wav"];
    SystemSoundID ssound;
    
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURLfileURLWithPath:fpath], &ssound);
    AudioServicesPlaySystemSound(ssound);
}

@end

2011년 7월 19일 화요일

xcode tip - 주석에 __MyCompanyName__. 바꾸기

$ defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME"="sparrow apps";}'

터미널에서 위와 같이 입력하면
SPARROW APPS로 된다.

바꾸고 싶은 문자열로 바꾸삼!!

출처 : http://cocoadev.co.kr/114

근데..

Xcode4에서는 이상하게 안됨

__MyCompanyName__ 계속 이넘....

2011년 7월 8일 금요일

Objective-C++ ??

Objective-C로 iOS프로그래밍을 한다.
그런데 Objective-C++ 이란것도 있다.

이게 먼고하니 간단히 이야기 해서 Objective-C에서 C언어를 혼재해서 쓸수 있는것처럼

Objective-C++은 C++을 혼재해서 쓰는 경우를 Objective-C++이라고 한다.

확장자는 .m이 아니라 .mm

C++과  Objective-C와의 클래스 상호간에 상속이 안된다는 제약은 있다.

하지만 C/C++ 로 만들어진 수많은 코드들을 이용하고 싶을때는 사용하면 좋을듯 하다.



언제나 모르는것 새로운것을 알게되는것은 참으로 흥미로운일이다.

2011년 7월 4일 월요일

xcode4 tip: svn 사용하기

기본적으로 xcode4에서 프로젝트를 생성하면 git와 연동이되고
자동으로 리포지토리에 등록이 되서 코드 수정시 마다 변경 이력이 자동으로 되는거 같기도 하다.

근데 잘 모르겠다.

git도 모르겠다.

svn osx 10.6에 기본으로 세팅되어 있으니

# sudo svnadmin create /Users/계정/svnroot
이렇게 입력하고 여기를 리포지토리로 등록하면
이후 프로젝트들을 관리 할 수 있다.

xcode4실행후

file -> Source Control -> Repositories
또는 xocde에서 Organizer를 수행해서 Repositores를 선택한다.
+를 눌러 새로운 리포지토리를 등록한다.

위에서 만든 svnroot의 접근 경로를
file:///Users/계정/svnroot라고 해준다.

그리고 이미 만들어진 프로젝트를 import한다.

다른 경로에 chekout을 하고 거기에 프로젝트 파일을 열어본다.
이후 부터는 버젼 컨트롤이 이루어지고 xcode에서 수정하면 M아이콘과
File -> Source Control -> 메뉴들이 활성 된다.

2011년 7월 1일 금요일

sudoku 풀이 app in appstore

appstore에서 보기

sudoku 풀이 app도  앱스토어에 올라 갔다.

이제 민준이 퍼즐이 앱스토어에서 승인 직전이다.

민준이 퍼즐 버젼이 앱스토어에 올라가면

바로 은준이 퍼즐이 올라가고.

이제 좀 수익이 될만한 아이템을 찾아 무공수련과 함께 운기조식을 하고
좀 제대로된 어플을 만들어야 겠다.

Xcode4 tip -- 도움말 내려 받기

머 그냥 도움말이 나오길래 머 그냥 그냥 썻는데 솔직히 좀 느렸다.
이유가 먼지 몰랐다.

이유인즉 도움말이 기본적으로 Xcode4설치 했다고 설치되는게 아니다.

XCode>Preferences..> Documents탭
Check for and istall updates automatically 를 체크 하고
옆에 Check and Install Now 버튼을 눌러주면
여러번 계정 password확인을 하고
각각의 항목을 Getting...... (내려 받는다.)

이후로는 도움말이 네트워크를 사용하지 않고 로컬에서 쾌적하게 바로바로 찾아진다.

Xcode4 tip -- NSZombiEnabled

Product -> Edit Scheme ->
Run Debug에서 Arguments 탭을 선택
Environment Variables에
NSZombieEnabled 를 추가하고 Value에 YES 를 넣어준다.

객체 release를 했을때 release를 하지 않고 다시 참조 하려고 하는 코드를
디버그 창에 출력 해준다.


앱이 비정상 종료를 할때 NSZombie를 사용했더니 다음과 같은 메세지가 출력됬다.


*** -[UIImage isKindOfClass:]: message sent to deallocated instance

구글링을 하니..



Sounds like you're over-releasing your image objects. Like all the Cocoa collection classes, an NSMutableArray instance retains objects added to it and releases them when it is itself released. If you create an object using a call that doesn't increase its retain count and then release it once you've added it to the array, you'll see this sort of error.
For example:
UIImage *image = [UIImage imageWithData:someData];
[myArray addObject:image];
[image release]; // <-- BAD!
Here you don't own the object image (because you didn't create it using alloc or copy), so you don't need to release it. The pointer in the array now points to an object with a retain count of zero, which will eventually be deallocated.
Using autorelease instead of release in the above example is equally wrong, for the same reason.

답은 imageWithData:someData처럼 머 UIImage가 alloc한게 아니기 때문에 release나 autorelease모두 문제가 된다는 것이다.
덕분에 잘 해결 했다.