Ich habe eine macOS App in Objective-C die sich mit Xcode 9.2 problemlos übersetzen und ausführen lässt.
In dieser App verwende ich performSelector:withObject: zum Aufruf einer Klassen Methode. Die aufgerufene Methode hat einen Rückgabewert vom Typ BOOL und der Aufruf der Methode boolValue auf das zurückgegebene Objekt liefert passend YES/NO zum Rückgabewert der Methode.
Der verwendete Code sieht aktuell in etwa so aus:
Unter Xcode 9.2 kompiliert funktioniert dies alles wunderbar.
Wenn ich den gleichen Source Code jedoch unter Xcode 10.2 übersetze, dann gibt es bei Zeile 4 eine EXC_BAD_ACCESS (code=1, address=0x18) Exception.
Mit Xcode 9.2 übersetzt scheint der Rückgabewert vom Typ NSAtom zu sein, wobei ich eigentlich NSNumber erwartet hätte. Die Methode boolValue scheint es bei NSAtom jedoch zu geben und es wird auch der korrekte Wert YES oder NO zurückgegeben.
Mit Xcode 10.2 zeigt mir der Debugger jedoch verschiedene Klassen von id, über NSIndexPath, NSTaggedDate, bis NSAtom an. Es ist schon seltsam, dass Objekte verschiedener Klassen zurückgegeben werden, obwohl die aufgerufene Klassenmethode immer nur BOOL zurück liefert. Blöd ist jedoch, dass es in Zeile 4 eigentlich immer eine Exception gibt und der Code, der mit Xcode 9.2 übersetzt noch problemlos funktioniert, unter Xcode 10.2 seinen Dienst verweigert.
Wie kann ich mit Xcode 10.2 dynamisch eine Klassenmethode aufrufen und den Rückgabewert vom Typ BOOL korrekt auswerten?
In dieser App verwende ich performSelector:withObject: zum Aufruf einer Klassen Methode. Die aufgerufene Methode hat einen Rückgabewert vom Typ BOOL und der Aufruf der Methode boolValue auf das zurückgegebene Objekt liefert passend YES/NO zum Rückgabewert der Methode.
Der verwendete Code sieht aktuell in etwa so aus:
Wenn ich den gleichen Source Code jedoch unter Xcode 10.2 übersetze, dann gibt es bei Zeile 4 eine EXC_BAD_ACCESS (code=1, address=0x18) Exception.
Mit Xcode 9.2 übersetzt scheint der Rückgabewert vom Typ NSAtom zu sein, wobei ich eigentlich NSNumber erwartet hätte. Die Methode boolValue scheint es bei NSAtom jedoch zu geben und es wird auch der korrekte Wert YES oder NO zurückgegeben.
Mit Xcode 10.2 zeigt mir der Debugger jedoch verschiedene Klassen von id, über NSIndexPath, NSTaggedDate, bis NSAtom an. Es ist schon seltsam, dass Objekte verschiedener Klassen zurückgegeben werden, obwohl die aufgerufene Klassenmethode immer nur BOOL zurück liefert. Blöd ist jedoch, dass es in Zeile 4 eigentlich immer eine Exception gibt und der Code, der mit Xcode 9.2 übersetzt noch problemlos funktioniert, unter Xcode 10.2 seinen Dienst verweigert.
Wie kann ich mit Xcode 10.2 dynamisch eine Klassenmethode aufrufen und den Rückgabewert vom Typ BOOL korrekt auswerten?