iOS개발하기 #38. UISearchDisplayController(4)

오늘의 주제

  • Thread 중지하기
  • 네트워크 상태 체크

서른 여덟번째 시간입니다.^^
그 전에 오늘은 현충일이네요!
나라를 위하여 목숨을 내던진 우리 선조님들에게 경의를 표합니다. 진심으로 고맙습니다.
지난 번에 테이블에 파싱 결과를 뿌려주는 것을 해 보았는데요, 코드에 결점을 발견하게 되어 수정사항과 보강사항에 대하여 포스팅 합니다.
이렇게 자꾸 예외상황에 대해 코드를 추가 해 주고, 실수 한 부분에 대해서는 다시 작업을 해 주어야 겠지요..ㅋㅋㅋ
이 또한 프로젝트를 진행하는 묘미 아니겠습니까..ㅋㅋㅋ
여하튼 한 발 늦춰 가더라도 틀린 부분을 다시 짚고 넘어가기 위해 포스팅 하므로, 급한 마음 조금만 누그러뜨리시고 봐주시기 바랍니다~
자, 그럼 가봅시다!

Thread 중지(취소)하기

일단 스레드 중지를 위해서 중복적으로 사용되는 코드들을 메서드로 묶어서 구현하였습니다.
그리고 검색 바에서 사용자가 취소버튼을 눌렀을 때, 스레드가 취소되고 검색이 중지되어야 하는 것이 맞으므로 검색바 딜리게이트 메서드 중에 하나인 searchBarCancelButtonClicked 메서드를 이용해 취소시에 중지하도록 구현하였습니다. 부족한 부분을 하나씩 보강해 나가는 것이죠...^^;

그리고 네트워크를 사용 중일 때에는 네트워크 인디케이터를 켜줘서 사용자에게 네트워크를 사용중임을 알려주어야 합니다.
만약 네트워크 상태 인디케이터를 켜지 않는다면 애플의 검수과정에서 앱 등록이 반려(리젝)될 수 있습니다. 사실 네트워크 인디케이터는 // 결가 값 받기 라는 주석이 처리되어 있는 부분 위쪽에 구현하는 것이 더 정확하겠네요^^;
또, 지난 번에 스레드를 cancel 이란 메서드로 취소 했던 부분이 있는데요, 제가 개발문서를 보면서 이게 과연 취소하는 것이 맞나 싶을 정도로 직접적인 취소에 관한 언급이 없었습니다. 그래서 다시 구글링해서 찾아본 결과 그것은 스레드 자체에 취소 명령을 내리는 것이 아니라 스레드가 취소 될 예정이다, 라고 스레드에 표시만 해 놓는 역할이었습니다. 그래서 스레드가 관할하고 실행하고 있는 메서드 내에서 스레드가 취소예정이라고 판단이 들면 자기 스스로 종료를 해야 한다는 것이었습니다. 
그래서 추가적으로 코드를 넣어주어야 했습니다. 이로서 스레드가 완전히 멈추게 되었습니다.

자, 그리고 또 빠뜨린 것이 있었는데요, 네트워크 상태 체크하는 부분입니다.
아무리 검색기능이 잘 구현되어 있더라도 네트워크에 접속되어 있지 않다면 무용지물입니다...^^
네트워크 상태를 미리 체크하여 사용자에게 알려줄 수 있도록 처리해봤습니다.
일단 프레임워크 하나가 필요합니다.
프레임워크 추가를 해 봅니다. 아래 그림을 봐도 되구요
2012/03/29 - [iOS Dev/깨알 Tips] - Xcode4에서 Framework & Library 추가하기 를 참고하셔도 좋습니다.

SystemConfiguration.framework 를 추가합니다.

그리고 네트워크 상태체크에 필요한 소스파일들이 있는데, 그녀석들을 넣어줄 그룹을 하나 만들어 봅시다.
Root폴더(여기서는 WithYagom 이라는 노란 폴더) 에서 우클릭해서 New Group 를 클릭!
새로운 그룹이 만들어지면 Reachability라는 이름으로 만들어 줍시다~

그리고 이제 그 필요한 녀석들을 찾아 떠나봅니당 ㅎ
Reachability라는 녀석을 애플에서 제공을 합니다. 그녀석을 받아올거예용ㅎ
Link : Reachability 
링크를 따라가서 Download Sample Code 라는 녀석을 클릭!

다운받아서 압축을 풀어보면 이렇게 풀리는데요~
Classes 라는 폴더에 들어가 보면~

요렇게 네 파일이 있는데 그 중에 Reachability 두 파일을 쭈욱 끌어다가 아까 만들어둔 그룹으로 끌어옵니당~
사실은... 이렇게 따라하는 방법이 정석이지만, 우리는 지금 ARC를 사용하고 있기 때문에 이 방법으로 하면 에러가 나고 말거예요 ㅠㅠ

그래서 제가 ARC 사용 중 ARC가 아닌 것들을 사용할 수 있는 방법을 포스팅 해 두었습니다~
화내지 마세요~ 뿌잉뿌잉~
2012/08/13 - [iOS Dev/깨알 Tips] - 특정파일 ARC 제외시키기
파일들을 추가 한 후 위의 포스팅을 따라하시면 됩니다 🙂
 

그럼 이렇게 파일 추가 옵션이 나오겠죠?
추가합니다용~ㅎㅎ 

일단은 헤더에서 우리는 경고창을 띄운 후 사용자가 클릭하면 모달뷰를 종료시키려고 하니까, 얼럿뷰 딜리게이트를 선언해줍니다.

그 후에 구현파일에 와서 Reachability 헤더를 임포트 해주고 

얼럿뷰 딜리게이트 메서드를 구현해 주구요~
네트워크 상태 체크를 위한 메서드 하나를 만들어 줍니다.
저는 isNetworkEnable 이라는 메서드를 만들어 주었구요~
처음 로드 되었을 때 실행되는 viewDidLoad 메서드에 네트워크 상태 체크를 해보고 연결이 되어있지 않으면 경고창을 띄우고 취소 버튼을 누르면 모달뷰를 종료하도록 처리했습니다~

### 혹시나 Reachability를 사용할 때 링크 에러가 나시는 분들은 이렇게 타겟 지정이 되어있나 확인해 보세용~

자, 이렇게 오늘도 알차게 코드를 완성해 나가고 있습니다용~ㅎㅎ
한 걸음 한 걸음 해가면서 기초도 다지고, 개념도 익히며 나가보려 해요~
조금 어렵고 힘들고, 조급함이 느껴질 수 있겠지만, 천천히 따라오세요~^^
필요한 부분이나 궁금한 점 댓글 남겨주세요!

by yagom

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

댓글 남기기

Close