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와 같은 속성을 추가하면 됩니다.
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에 판매중입니다.
개인적으로는 그래픽도 한층 개선이 된다고 하니 무척 기대가 됩니다.
예전에 세일할때 샀던 게임이지만 이렇게 기대치 않게 메이저 업데이트를 해주고 아이폰, 아이패드를 가정용 콘솔로 만들어준다는게 참 매력적인 것 같습니다.
스티브 잡스가 나서서 만든 변화도 아니고 애플이 만든 생태계 속에서 이렇게 변화를 만들어간다는 것도 인상적입니다.
간단히 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를 핸들러로 등록
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.