Programming/Mac & iOS 53

[Objective C] Notification 사용하기

객체지향 프로그래밍에서 객체간 메시지를 주고 받는 상황을 비일비재하게 발생하게 됩니다. 객체간의 연관 관계가 존재한다면 단지 객체의 메소드를 호출하는 것만으로 메시지를 전달이 가능합니다. 하지만 객체간 연관 관계가 존재하지 않는다면 메시지를 존재하기 복잡해집니다. 이를 해결하기위해 제공하는 방법 중에 한 가지를 소개하겠습니다. 바로 Notification입니다. 메시지를 송신할 객체는 NSNotificationCenter를 통하여 Notification을 송신하기 위한 객체를 받습니다. NSNotificationCenter의 [postNotificationName: object: userInfo:]를 통하여 Notification을 보내면 됩니다. 그러면 메시지를 수신할 객체는 어떻게 수신해야할까요? 수..

[Objective C] iOS에서 진동 구현

iOS에서의 진동 구현은 안드로이드에 비해 간단하다. 반면 iOS 정책상으로 진동의 패턴과 길이는 조절할 수 없다. 조절한다고 해도 Reject의 대상이 되기 때문에 앱 스토어에 올릴 수 없다. 참고 바란다. 먼저 진동을 구현하기 위해서는 AudioToolbox Framework를 import 해줘야 한다. 위의 그림처럼 프레임워크를 추가한 다음에 다음의 코드를 헤더파일에 추가한다. #import 위와 같이 하면 import과정이 다 끝난다. 이제 진동을 사용하는 부분에 밑의 코드 한 줄만 추가하면 된다. 진동 구현이 안드로이드에 비해 상당히 간편하다 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

[Objective C] Thread 사용하기

안드로이드와 iOS의 스레드 사용법은 완전히 다르다. NSThread *t1 = [[NSThread alloc] initWithTarget:self selector:@selector(threadFunc:) object:nil];[t1 start]; 위와 같이 스레드를 생성해서 이용하면 된다. threadFunc로 스레드의 역할을 정의해주면 된다. 자바의 Thread의 run()이라고 생각하면 이해가 쉽다. 스레드를 종료시킬 때는 스레드를 강재로 죽이는 것보다는 스레드의 실행단위가 완료될 수 있도록 간접적으로 죽이는 방법이 전반적으로 선호된다. 특히 iOS는 시스템의 안전성을 위해서 간접적으로 죽이는 방법만 허용한다. [t1 cancel]; cancel을 사용하여 내부의 flag 값을 바꾸어 종료 시키는 ..