오늘의 주제
1. UIActivityIndicator
2. NSThread
서른 한 번째 시간입니다.^^
지난 번에 소리재생을 했는데, 화면이 멍 때리는 현상이 발생하였죠?ㅎ
자, 그녀석을 해결할 방법을 찾아봅시다.
그리고 로딩할 때 그냥 로딩되면 심심하니까 뺑글이도 한 번 넣어줘 봅시다~
스따뚜~~~~~~~~~~~~
그 전에 추천 한 방 어떠세요?ㅎ 저에겐 큰 힘이 됩니다 +_+ㅋ
# NSThread
일단, 화면이 멈추는 것 먼저 해결을 해 보도록 할게요.
스레드 라는 녀석이 있습니다.
우리가 이제까지 일반적으로 코드를 통해 동작시킨 녀석들은 거진 다 메인 스레드에서 동작을 하게 됩니다.
그런데 메인 스레드에서 무슨 일을 명령을 하면 어떤 한 일처리가 끝나기 전까지는 다른 일처리를 하지 못합니다.
다시 말해서 음악 플레이를 준비해! 라고 명령을 하면 음악 준비에 너무 열중 한 나머지 화면처리를 하지 못한다는 뜻입니다.
그래서 버튼이 퍼렇게 남아있고 화면이 멈춘 것처럼 보이게 되는 것이죠.
그래서 우리는 명령을 여러 줄로 분산시켜서 여러개의 명령은 한 번에 처리하도록 처리해 줄 수 있습니다.
그것을 스레드라고 합니다.
그래서 화면처리는 메인스레드에서, 로딩이나 파일 처리는 다른 새끼 스레드에서 처리를 하게 해 줍니다.
화면 처리는 메인스레드에서만 해줘야 합니다..^^
그래서 우리는 음악 로딩과 플레이 명령을 다른 스레드에서 동작하도록 구현해 보도록 할거예요~
간단합니다 ㅎㅎㅎ
코드 몇 줄로 끝!
지난 번에는 버튼을 누르자 마자 해당 명령들을 실행을 했는데, 이번에는 명령들을 새로운 메소드에 넣어주고, 기존 메소드에서는 버튼을 누를 때 스레드를 생성해 주는 코드로 바뀐거예요~^^
ViewController.m으로 이동합니다~
자, 마법처럼 파란 멍 때리는 현상이 없어졌죠?ㅎ
화면처리는 메인스레드에서 해주고, 음악 파일 준비와 실행은 새끼 쓰레드에서 처리를 하기 때문이예요 ㅎ
# NetworkIndicator, UIActivityIndicator
자, 이번에 뺑글이를 넣어 봅시다~
뺑글이의 종류는 크게 두 가지, 네트워크 인디케이터, 액티비티 인디케이터가 있습니다.
네트워크 인디케이터는 말 그대로 네트워크를 사용한다는 의미로 보여주구요, 액티비티 인디케이터는 뭔가 자료처리를 하고 있음을 보여주는 녀석입니다.
두 녀석 다 화면에 표시해 보도록 할게요. 물론 실제로는 불필요하게 네트워크 인디케이터를 사용해서 오해를 살 필요는 없겠죠?ㅎ
일단 헤더파일로 와서 액티비티인디케이터를 하나 선언해 줍니다.
그리고 viewDidLoad 메소드에서 nil로 초기화를 해 주구요~
인디케이터를 생성해 주는 메소드를 추가해 줍니다.
아까 말했듯이 화면처리는 메인 스레드에서 해줘야 하는데 액티비티 인디케이터는 화면처리에 속하므로 메인스레드에 넣어줘야 해요~
네트워크 인디케이터는 이것과는 좀 별개라 상관이 없는데 액티비티 인디케이터는 이렇게 처리를 해주어야 합니다...ㅎㅎ
자, 이렇게 다들 잘 나오시나요?ㅎ
저는 잘 나오네용 ㅋㅋㅋ
이렇게 오늘도 하나 툭 내려놓고 갑니다~
또 필요한 것 있으시면 댓글 주세요~^^
저 그럼 이만 물러가 보도록 하겠습니다~!
by yagom
twitter : @yagomsoft
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓
'iOS Dev > 함께해보기' 카테고리의 다른 글
iOS개발하기 #33. Protocol, Delegate (프로토콜, 델리게이트) (31) | 2012.05.24 |
---|---|
iOS개발하기 #32. 피커뷰(UIPickerView) (26) | 2012.05.21 |
iOS개발하기 #30. 음악재생 (AVAudioPlayer) (51) | 2012.05.14 |
iOS개발하기 #29. 경고창 (UIAlertView) (20) | 2012.05.11 |
iOS개발하기 #28. 웹뷰 (WebView) <2> - delegate 사용해 보기 (25) | 2012.05.09 |