OK, ich habe das noch nie zuvor gesehen. Hier ist mein Code:@ try @ catch Block nicht innerhalb Ausnahme fangen
@try {
[self.avPlayer removeObserver:self forKeyPath:@"status"];
[self.avPlayer removeObserver:self forKeyPath:@"rate"];
} @catch (NSException *exception) {
} @finally {
}
Sie können ganz klar sehen, ich habe diese 2 Zeilen Code im @try-Block. Allerdings stürzt es immer noch meine App ab. Hier ist die abgefangene Ausnahme Nachricht:
kann keinen Beobachter entfernen < SoulHLECellView 0x7fa8d2b536b0> für den Schlüsselpfad „Status“ von < AVPlayer 0x7fa8d714ad70>, weil es nicht als Beobachter registriert ist.
Also, ganz klar, das wird durch den Code verursacht, den ich oben gepostet habe. Wie zum Teufel ist das möglich? Was fehlt mir hier?
Warum verwenden Sie 'try/catch'? Schreiben Sie Ihren Code so, dass Sie nur versuchen, den Beobachter zu entfernen, wenn Sie den Beobachter hinzugefügt haben. – rmaddy
@rmaddy wahrheitsgemäß, weil es nicht mein Code ist und es ist dicht und ich möchte nichts brechen oder neue Bugs verursachen. –
Ich kann den Fehler * auf OS X * nicht reproduzieren, alle meine Versuche können die Ausnahme abfangen. Schauen Sie sich die Stack-Spur an, die möglicherweise einen Hinweis enthält. Es gibt nichts falsch * per se * mit Ihrem Code (irgendwelche philosophischen Probleme beiseite ;-)) – CRD