본문 바로가기

iOS Dev/함께해보기

iOS개발하기 #31. UIActivityIndicator, NSThread


오늘의 주제

1. UIActivityIndicator
2. NSThread



서른 한 번째 시간입니다.^^

지난 번에 소리재생을 했는데, 화면이 멍 때리는 현상이 발생하였죠?ㅎ
자, 그녀석을 해결할 방법을 찾아봅시다.

그리고 로딩할 때 그냥 로딩되면 심심하니까 뺑글이도 한 번 넣어줘 봅시다~
스따뚜~~~~~~~~~~~~

그 전에 추천 한 방 어떠세요?ㅎ 저에겐 큰 힘이 됩니다 +_+ㅋ

# NSThread

일단, 화면이 멈추는 것 먼저 해결을 해 보도록 할게요.

스레드 라는 녀석이 있습니다.

우리가 이제까지 일반적으로 코드를 통해 동작시킨 녀석들은 거진 다 메인 스레드에서 동작을 하게 됩니다.

그런데 메인 스레드에서 무슨 일을 명령을 하면 어떤 한 일처리가 끝나기 전까지는 다른 일처리를 하지 못합니다.

다시 말해서 음악 플레이를 준비해! 라고 명령을 하면 음악 준비에 너무 열중 한 나머지 화면처리를 하지 못한다는 뜻입니다.

그래서 버튼이 퍼렇게 남아있고 화면이 멈춘 것처럼 보이게 되는 것이죠.

그래서 우리는 명령을 여러 줄로 분산시켜서 여러개의 명령은 한 번에 처리하도록 처리해 줄 수 있습니다.

그것을 스레드라고 합니다.

그래서 화면처리는 메인스레드에서, 로딩이나 파일 처리는 다른 새끼 스레드에서 처리를 하게 해 줍니다.

화면 처리는 메인스레드에서만 해줘야 합니다..^^

그래서 우리는 음악 로딩과 플레이 명령을 다른 스레드에서 동작하도록 구현해 보도록 할거예요~

간단합니다 ㅎㅎㅎ

코드 몇 줄로 끝!

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

ViewController.m으로 이동합니다~


자, 마법처럼 파란 멍 때리는 현상이 없어졌죠?ㅎ

화면처리는 메인스레드에서 해주고, 음악 파일 준비와 실행은 새끼 쓰레드에서 처리를 하기 때문이예요 ㅎ
 
# NetworkIndicator, UIActivityIndicator
 

자, 이번에 뺑글이를 넣어 봅시다~

뺑글이의 종류는 크게 두 가지, 네트워크 인디케이터, 액티비티 인디케이터가 있습니다.

네트워크 인디케이터는 말 그대로 네트워크를 사용한다는 의미로 보여주구요, 액티비티 인디케이터는 뭔가 자료처리를 하고 있음을 보여주는 녀석입니다.

두 녀석 다 화면에 표시해 보도록 할게요. 물론 실제로는 불필요하게 네트워크 인디케이터를 사용해서 오해를 살 필요는 없겠죠?ㅎ

일단 헤더파일로 와서 액티비티인디케이터를 하나 선언해 줍니다.


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


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


자, 이렇게 다들 잘 나오시나요?ㅎ

저는 잘 나오네용 ㅋㅋㅋ

이렇게 오늘도 하나 툭 내려놓고 갑니다~

또 필요한 것 있으시면 댓글 주세요~^^

저 그럼 이만 물러가 보도록 하겠습니다~!


by yagom

twitter : @yagomsoft

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

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓