2013-05-06 4 views
1

나는 처음에는 사용자의 위치를 ​​확인한 다음 해당 지점의 날씨를 얻을 수있는 앱을 가지고 있습니다. 주로 바람의 방향과 속도.다른 클래스의 GCD

Intenet 연결이 있는지 확인하려면 정상적으로 수행되지만 연결이 있으면 시작 화면에서 응용 프로그램이 정지됩니다 (시작시 확인).

나는 이것을 시작하는 클래스가 있는데, 시작 화면에로드 된 후에 홈 화면이로드됩니다. GCD가 올바른 방법 인 것 같지만, 레이블에 표시 할 답변을 얻을 수 있습니까? 홈 화면이 끝나면 데이터를 가져 오는 중입니까? 메인 트레드는 떠났을 것이고, 아니면 그 클래스를 우회하여 메인 스크린에 도착했을 것입니다.

알림 센터를 업데이트하고 다시로드하는 데 도움이 필요합니까?

의견이나 코드 스 니펫을 보내 주셔서 감사합니다. 요르겐

추신. 이전 iPads를 행복하게 유지하기 위해 iOS 5.1 앱을 유지하려고합니다.

+0

인터넷 연결을 어떻게 확인합니까? 그리고 왜? 최신 WWDC에서 모든 개발자는 _Reachability_ 클래스의 메서드가 매우 느리기 때문에 해당 부분을 건너 뛰고 네트워크 통신을 직접 수행하고 피드백의 '거짓'분기에서 _no-connection_ 이벤트를 처리하는 것이 좋습니다. – holex

+0

나는 apple.com에 갈 수 있는지 확인하는 방법이 있습니다. – Jorgen

답변

0

GCD이 올바른 방법 인 것처럼 보이지만 데이터를 가져올 때 홈 화면의 레이블에 응답을 표시 할 수 있습니까? 메인 트레드는 떠났을 것이고, 아니면 그 클래스를 우회하여 메인 스크린에 도착했을 것입니다. 레이블을 업데이트하고 다시로드하는 데 알림 센터와 같은 것을 사용해야할까요?

네, 여기 아주 잘 다니고 있다고 생각합니다. 의는하지만, 별도의 두 가지 문제를 계속하자

  • GCD에 여전히 배경 작업을 수행 한 후 지금 인터페이스를 업데이트 할 때문에, 당신은 메인 스레드에 다시 올 것입니다. 그것은 쉽고 간단합니다.

  • 통신에 문제가있는 경우 알림을 보내면 훌륭한 해결책이 될 수 있습니다. 해당 레이블을 업데이트 할 필요가 있는지 브로드 캐스트하고 이면 올바른보기 컨트롤러가 있고 수신 중이면 해당 정보를 가져옵니다.

    그러나 알림을받는 것보다 더 나은 방법이있을 수 있으므로 아키텍처에 대해 생각해야합니다. 메인 스레드로 되돌아 가면 을 알고있는 위치에 있지 않아 올바른보기 컨트롤러가 있는지 직접 알려주는지 알 수 있습니다. 나는 그 통보가 나쁘다거나 잘못되었다고 말하는 것이 아닙니다! 필자는이 솔루션을 직접 사용했으며 알림은 NSOperation에서 돌아 오는 표준 방법입니다. 나는 그저 조금 생각 해보라고 말하고있다.