2008-10-30 37 views
8

Mam aplikację, która używa akcelerometru. Czasami aplikacja zostanie uruchomiona bez aktualizacji danych akcelerometru. Ponowne uruchomienie aplikacji, czasami problem utrzymuje się, czasami nie. I jeszcze dziwniejsze, czasami mogę spróbować 10 razy i wszystko działa zgodnie z oczekiwaniami. Czy to błąd, czy może coś, czego mi brakuje. Podczas debugowania ten kod nigdy nie jest wywoływany, gdy akcelerometr nie jest aktualizowany:Czasami metoda delegowania przyspieszeniomierza nie jest nazywana

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration; 

Jakieś pomysły?

Odpowiedz

7

W końcu znalazłem pracę. To znany błąd. Więc praca, którą znalazłem, polega na uruchomieniu wątku i sprawdzeniu tego wątku, jeśli został wywołany delegat akcelerometru, jeśli go ma, a następnie opuść wątek, jeśli nie, ustaw delegata ponownie i przeprowadź ponownie test, dopóki delegat akcelerometru nie przekaże zostaje wywołany. Testowałem to całkowicie i działa bezbłędnie. Mam nadzieję, że zostanie to rozwiązane podczas kolejnej aktualizacji systemu operacyjnego iPhone.

1

Mam ten sam problem. Zdarza się to być może 1/20 razy z aplikacji, którą zrobiłem z próbki CrashLanding. Po tym, jak zauważyłem to za pomocą mojej aplikacji, złapałem nową wersję Crashlanding, zainstalowałem ją i na końcu dostałem, aby zacząć od awarii akcelerometru.

Nie wiem, jak to naprawić. Szczerze mówiąc nienawidzę przyspieszeniomierza ... przynajmniej do kontrolowania gier: - \

Co więcej, akcelerometr czasami kończy się niepowodzeniem po uruchomieniu przykładowego projektu "przyspieszeniomierza".

1

Jak wspomnieli inni, jest to znany błąd; Zalogowałem błąd w Apple (Bug Reporter problem ID 6093028), być może inni też to zrobili. O ile mi wiadomo, wszystkie aplikacje korzystające z UIAccelerometer (w tym przykładowe aplikacje Apple) cierpią z powodu tego problemu, choć częstotliwość występowania jest różna.

1

FWIW, moja aplikacja jest szeroko stosowana i wykorzystuje akcelerometr i nigdy nie miałem tego problemu.

Mój przypadek użycia może być inny niż twój: włączam go tylko na żądanie użytkownika, także po uruchomieniu aplikacji.

Powiązane problemy