XCode 4에서 NSZombieEnabled, NSDebugEnabled 설정 사용하기

NSZombieEnabled는 메모리를 해제하는 대신 NSZombie로 둠으로써 EXC_BAD_ACCESS같은 문제를 해결할 때 도움을 줍니다.

XCode 3에서는 Executables에서 프로젝트의 executable에 오른쪽 버튼으로 Get Info를 해서 Arguments의 Variables to be set in the environment에 NSZombieEnabled라는 variable을 추가하고 값을 YES로 해주면 활성화가 됩니다. (참조)

XCode 4에서는 Products에서 오른쪽 클릭을 해봐도 Get Info가 없는 것을 알 수 있습니다.
위에 메뉴를 보면 Product가 있는데 여기서 Edit Scheme에 들어가도록 합시다.

이제 여기서 Arguments에서 Environment Variables에 NSZombieEnabled, NSDebugEnabled와 같은 속성을 추가하면 됩니다.

또 다른 방법은 Diagnostics에서 옵션을 활성화해 줄 수도 있습니다.

다른 옵션들은 잘 모르겠는데 디버깅에 도움이 되는 옵션들로 보여집니다.

아이폰, 아이패드로 4명이 HDTV에서 레이싱 게임을 즐기자!

iOS용 레이싱 게임 Real Racing 2의 개발사 Firemint에서 iOS 5 대응 업데이트의 신 기능을 발표 했는데
무려 AirPlay를 이용해서 HDTV로 4명이 ‘파티 플레이’를 즐길 수 있는 모드입니다.

AirPlay는 작년 9월에 발표한 iOS 모바일 장치에서 애플 TV로 영상, 음악 미디어 등을 무선으로 전송하여 재생하는 기술입니다. (참고로 애플TV는 셋탑박스로써 일반 TV에 연결하여 사용합니다)

이 파티 플레이 모드를 즐길려면 최소 한 대는 A5 프로세서를 장착하고 있어야하며 (즉 아이패드2나 아이폰4S여야 하죠)
나머지 장치들도 iOS5가 설치되어 있어야 한다고 합니다.

현재도 Real Racing 2 HD는 AirPlay로 콘솔처럼 HDTV에서 무선 대화면 게이밍을 즐길 수 있습니다. 애플TV에서 720p의 고해상도로 플레이가 가능하며 Real Racing 2는 뛰어난 그래픽을 자랑하는 게임이죠.

이런 AirPlay를 이용한 멀티플레이어용 게임이 등장을 하게 되면 가장 타격을 입을 곳은 닌텐도로 보여지네요.
닌텐도가 강세를 보이는 분야가 주로 많은 사람들이 함께 즐길 수 있는 캐주얼한 마리오 카트나 스포츠류 게임들인데 이제는 각자 가지고 있는 iOS 장치로도 게임이 가능해질테니까요. (물론 애플TV도 있어야하는데 애플TV는 $99로 매우 저렴한 편입니다)

더군다나 PS3에서도 보기 힘든 720p의 고해상도에 자이로스코프를 이용한 모션인식멀티터치 인식도 뛰어나다는 장점이 있습니다.

닌텐도에서 발표한 차세대 콘솔 Wii U는 터치화면이 있는 컨트롤러가 특징인데 직격탄을 맞았다고 볼 수 있습니다. 더군다나 Wii U는 현재까지는 터치화면 컨트롤러는 1대까지만 지원하는 것으로 밝혀져 있습니다.

아이폰으로 인해 닌텐도DS의 매출에도 영향을 받는 중인데 닌텐도로써는 고심이 커질 것 같네요.

iOS 장치의 단점이라면 버튼이 없어 하드코어 게이밍에는 부적합한 면이 있다는 것인데 그 분야는 Xbox와 PlayStation라는 쟁쟁한 경쟁자들이 있지요. 그나마 마리오 같은 독점 컨텐츠가 있다는게 경쟁력인데 애플 앱스토어에서도 앵그리버드 등 많은 스타 게임들이 등장하고 있는 추세입니다.

3D로 승부수를 건 3DS와 터치스크린으로 승부수를 건 Wii U 모두 미래가 불투명해보여 안타까운데 일본의 애플로 불리는 닌텐도이니 만큼 또다른 혁신으로 헤쳐나갈 것이라 기대해봅니다.

본론으로 돌아가면 파티 플레이 기능을 포함한 Read Racing 2 메이저 업데이트는 iOS 5의 출시일인 10월 12일 같이 출시할 예정이며 현재 iPhone 버전(iTunes)은 $4.99 iPad 버전(iTunes)은 $6.99에 판매중입니다.

개인적으로는 그래픽도 한층 개선이 된다고 하니 무척 기대가 됩니다.
예전에 세일할때 샀던 게임이지만 이렇게 기대치 않게 메이저 업데이트를 해주고 아이폰, 아이패드를 가정용 콘솔로 만들어준다는게 참 매력적인 것 같습니다.
스티브 잡스가 나서서 만든 변화도 아니고 애플이 만든 생태계 속에서 이렇게 변화를 만들어간다는 것도 인상적입니다.

[관련기사]
Real Racing 2 first iOS game with 4-person split big screen action via AirPlay
Real Racing 2 shows off iPhone 4S’ graphical chops, brings split screen gaming to iOS (video)
4 iPhones + 1 Apple TV = Awesome Split-Screen Multiplayer Gaming

EditText에서 키 이벤트 처리

EditText에서는 OnKeyListener로 back키나 Enter키 입력은 받을 수 있는데
문자열같은 일반적인 키입력은 이벤트로 넘어오지 않습니다.

이런 이벤트를 받으려면 TextWatcher라는 것을 써야하더군요.

간단히 TextWatcher를 구현해서 EditText에 addTextChangedListener()를 해주면 됩니다.

TextWatcher textWatcher = new TextWatcher() {

	@Override
	public void beforeTextChanged(CharSequence s, int start, int count, int after) {
		// 텍스트가 변경되기전 입력한 내용에 대해
		// s는 변경할 수 없음
	}

	@Override
	public void onTextChanged(CharSequence s, int start, int before, int count) {
		// 텍스트를 변경된 후 변경 사항과 함께
		// s는 변경할 수 없음
	}

	@Override
	public void afterTextChanged(Editable s) {
		 // 텍스트가 변경된 후. 변경 사항은 알 수 없음
		// s는 변경 가능. 하지만 위 함수들이 다시 콜백됨을 유의
	}

};

editText.addTextChangedListener(textWatcher); // EditText인 editText에 textWatcher를 핸들러로 등록

Rest in Peace, Steve Jobs

20111006-093513.jpg

The Hero

스티브 잡스가 사망했다고 애플에서 밝혔네요.

애플 이사회에서 내놓은 성명 전문입니다.

We are deeply saddened to announce that Steve Jobs passed away today.

Steve’s brilliance, passion and energy were the source of countless innovations that enrich and improve all of our lives. The world is immeasurably better because of Steve.

His greatest love was for his wife, Laurene, and his family. Our hearts go out to them and to all who were touched by his extraordinary gifts.

고인의 명복을 빕니다.

BeenTogether. 사랑한지