2009-03-18 17 views
5

Jestem ciekawa, jak większość ludzi radzi sobie z błędami, takimi jak żądania HTTP Forbidden lub 5xx z serwera? Lub powiedzmy, że wyjątek jest zgłaszany w jednym z twoich kontrolerów UIViewController? Czy zazwyczaj pojawiasz się w dymku do Delegata aplikacji i obsługujesz ogólne błędy poziomu "okna" w tym punkcie? Czy łączysz błędy bezpośrednio z UIViewController? Co jeśli masz kilka UIViewController, które wszystkie mówią do wspólnej wrapper NSURLConnection, a połączenie nie powiedzie się dla niektórych podobnych błędów HTTP 4xx lub HTTP 5xx. Czy zazwyczaj zwrócisz uwagę na błąd dla Delegata aplikacji, aby mógł przedstawić UIAlertView z tej części aplikacji?Obsługa błędów w systemie Mac OSX/iPhone w Delegacie aplikacji?

Zastanawiasz się, jakiego rozwiązania używasz do obsługi błędów w systemie Mac OSX/iPhone.

Dzięki za bukiet.

Odpowiedz

2

Twój bieżący kontroler widoku powinien być odpowiedzialny za wysyłanie wszelkich komunikatów o błędach i radzenie sobie z wynikiem.

Ostatnia część jest tutaj kluczem. Jeśli napotkasz błąd HTTP i przekażesz wiadomość do delegata aplikacji z opcją "ponów", odpowiedź musi wrócić całą drogę z powrotem do kontrolera. To wszystko robi się trochę paskudne.

Teraz możesz utworzyć wspólną klasę/widok w swojej aplikacji, która poradzi sobie ze wszystkimi błędami, które możesz napotkać, ale to powinno być nadal prezentowane (w sposób modalny) przez kontroler, który napotka błąd i to ten kontroler powinien otrzymać delegowane odpowiedzi.

2

Kontrolery mogą, ale nie muszą wiedzieć, że wystąpił błąd, aby poprawnie naprawić błąd sieci, ale dla rozwoju iPhone'a uznałem za użyteczne posiadanie podstawowej klasy komunikacyjnej, która rozumie wszystkie komunikaty wchodzące w i wykracza poza system, a gdy wykryje awarie, natychmiast wyśle ​​alert. W ten sposób można zapobiec przeciążeniu powiadomień o awariach, jeśli użytkownik przełącza karty lub w inny sposób porusza się po aplikacji i po prostu generuje jedną wiadomość, aby użytkownik mógł zrozumieć, dlaczego ekrany nie są aktualizowane.