iOS개발하기 #31. UIActivityIndicator, NSThread

# 오늘의 주제

1. UIActivityIndicator
2. NSThread

서른 한 번째 시간입니다.^^
지난 번에 소리재생을 했는데, 화면이 멍 때리는 현상이 발생하였죠?ㅎ
자, 그녀석을 해결할 방법을 찾아봅시다.
그리고 로딩할 때 그냥 로딩되면 심심하니까 뺑글이도 한 번 넣어줘 봅시다~
스따뚜~~~~~~~~~~~~

## NSThread
일단, 화면이 멈추는 것 먼저 해결을 해 보도록 할게요.
스레드 라는 녀석이 있습니다.
우리가 이제까지 일반적으로 코드를 통해 동작시킨 녀석들은 거진 다 메인 스레드에서 동작을 하게 됩니다.
그런데 메인 스레드에서 무슨 일을 명령을 하면 어떤 한 일처리가 끝나기 전까지는 다른 일처리를 하지 못합니다.
다시 말해서 음악 플레이를 준비해! 라고 명령을 하면 음악 준비에 너무 열중 한 나머지 화면처리를 하지 못한다는 뜻입니다.
그래서 버튼이 퍼렇게 남아있고 화면이 멈춘 것처럼 보이게 되는 것이죠.
그래서 우리는 명령을 여러 줄로 분산시켜서 여러개의 명령은 한 번에 처리하도록 처리해 줄 수 있습니다.
그것을 스레드라고 합니다.
그래서 화면처리는 메인스레드에서, 로딩이나 파일 처리는 다른 새끼 스레드에서 처리를 하게 해 줍니다.
화면 처리는 메인스레드에서만 해줘야 합니다..^^
그래서 우리는 음악 로딩과 플레이 명령을 다른 스레드에서 동작하도록 구현해 보도록 할거예요~
간단합니다 ㅎㅎㅎ
코드 몇 줄로 끝!

지난 번에는 버튼을 누르자 마자 해당 명령들을 실행을 했는데, 이번에는 명령들을 새로운 메서드에 넣어주고, 기존 메서드에서는 버튼을 누를 때 스레드를 생성해 주는 코드로 바뀐거예요~^^
ViewController.m으로 이동합니다~


자, 마법처럼 파란 멍 때리는 현상이 없어졌죠?ㅎ
화면처리는 메인스레드에서 해주고, 음악 파일 준비와 실행은 새끼 쓰레드에서 처리를 하기 때문이예요 ㅎ
 

## NetworkIndicator, UIActivityIndicator
 
자, 이번에 뺑글이를 넣어 봅시다~
뺑글이의 종류는 크게 두 가지, 네트워크 인디케이터, 액티비티 인디케이터가 있습니다.
네트워크 인디케이터는 말 그대로 네트워크를 사용한다는 의미로 보여주구요, 액티비티 인디케이터는 뭔가 자료처리를 하고 있음을 보여주는 녀석입니다.
두 녀석 다 화면에 표시해 보도록 할게요. 물론 실제로는 불필요하게 네트워크 인디케이터를 사용해서 오해를 살 필요는 없겠죠?ㅎ
일단 헤더파일로 와서 액티비티인디케이터를 하나 선언해 줍니다.

그리고 viewDidLoad 메서드에서 nil로 초기화를 해 주구요~

인디케이터를 생성해 주는 메서드를 추가해 줍니다.
아까 말했듯이 화면처리는 메인 스레드에서 해줘야 하는데 액티비티 인디케이터는 화면처리에 속하므로 메인스레드에 넣어줘야 해요~
네트워크 인디케이터는 이것과는 좀 별개라 상관이 없는데 액티비티 인디케이터는 이렇게 처리를 해주어야 합니다...ㅎㅎ


자, 이렇게 다들 잘 나오시나요?ㅎ
저는 잘 나오네용 ㅋㅋㅋ
이렇게 오늘도 하나 툭 내려놓고 갑니다~
또 필요한 것 있으시면 댓글 주세요~^^
저 그럼 이만 물러가 보도록 하겠습니다!

by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기   

 


댓글 남기기

Close