Chcę, aby moja aplikacja nigdy się nie głupiła. Wiem, że jakość kodu jest głównym rozwiązaniem tego problemu. Ale nadal potrzebuję aplikacji, aby nigdy się nie zawieść, gdy pojawi się jakiś nieoczekiwany błąd. Oto kod, który chcę wypróbować.Rozwój iPhone'a: Jak złapać wyjątek/NSError w Objective-C?
-(void)testException
{
@try
{
NSString* str;
[str release];
}
@catch(NSException* ex)
{
NSLog(@"Bug captured");
}
}
Wiem, że ten nie działa. Ponieważ release
nigdy nie przenosi wyjątku. Oto moje pytania:
- Jak osiągnąć ten cel, błąd zostanie przechwycony, bez awarii?
- Skąd wiadomo, która biblioteka systemowa zgłosi wyjątek i mogę napisać kod i wiem, że działa?
Oto co czytałem
- a. Tematy programowania wyjątków dla: Cocoa
- b. Obsługa błędów programowania
Guide kakao
pochodzę doświadczonego programistę tle Microsoft, w której wyjątek haczyk lub nieoczekiwany wyjątek zawsze mój program zapobiegania awariom w bardzo złych warunkach.
W jaki sposób faceci/dziewczęta (programiści Mac genius) robili awaryjne programy? Podziel się wrażeniami.
Dzięki za odpowiedź. Twoja odpowiedź pomoże mi lepiej zrozumieć zarządzanie pamięcią i poszerzyć moją wiedzę na temat Celu C. Jednak próbowałem kodu, nigdy się nie zawieszają (powinny być, wydaje 4 razy, liczba odwołań powinna wynosić -3, jeśli to możliwe). ale w ogóle nie zdarzyła się awaria, nie ma też wyjątku. Wiem, że kiedyś się rozbije. ale nie wiem kiedy. wracając do podstawowego, czy istnieje sposób na uniknięcie awarii? –
Nie przejmuj się zatrzymaniem zliczeń. Nigdy nie powinieneś tego sprawdzać, nigdy nie jest tak, jak ci się wydaje, z różnych powodów. Musisz zająć się zarządzaniem pamięcią jedną metodą na raz. Szukaj Stackoverflow i google dla zarządzania pamięcią kakao. Jest mnóstwo zasobów, które mogą ci pomóc. Na początku może być trudny do nauczenia, ale staje się bardziej automatyczny. –