2017-02-09 3 views
-1

Ich bin nicht in der Lage, eine Lösung überall diese zu finden:Unable Swift-Protokoll in Objective C-Klasse zu verwenden, da es Segmentation fault verursacht: 11

Meine App hat Swift Protokolle und ich brauche, dass in einem implementieren alte Objective-C-Klasse. Nach der Implementierung des Protokolls, wenn ich das Objekt der Objective-C-Klasse erstelle, zeigt Xcode den Segmentierungsfehlerfehler 11. Dig in viele Posts, um die Lösung zu finden, aber keinen Erfolg.

Zur Veranschaulichung des Problems ich ein Demo-iOS-Projekt hier erstellt habe:

https://github.com/tusharbhatta/SwiftSegmentationFault

UPDATE:

eine Arbeit um das Problem gemacht. Überprüfen Sie es auf Zweig "gelöst" in der oben genannten Repo. :)

Aber immer noch bitte helfen, wenn Sie eine bessere Lösung kennen. Vielen Dank

+0

'Segmentation Fault Fehler 11' Bitte den Absturzbericht an Apple senden. – Moritz

+0

Ich habe Ihr Projekt heruntergeladen und versucht, es zu erstellen - was ich bemerkte, ist, dass wenn ich HatchbackCar aus dem Bridging-Header entferne, das Projekt kompiliert. Natürlich kann ich es dann nicht im Swift-Code verwenden. Vielleicht liegt das Problem daran, dass sowohl der Swift-Code in Obj-c als auch umgekehrt verwendet wird. Anyway sieht für mich wie ein Fehler in Xcode aus. – user3581248

+0

@Eric Aya, ja, ich habe Apple einen Fehler gemeldet. – Tushar

Antwort

0

bekam eine Antwort von Apple Ingenieuren über meinen Fehlerbericht an Apple Developer Bug Reporting-Portal, das das Problem in der Beta Xcode 8.3 und das Projekt baut erfolgreich behoben wurde. Hier ist die aktuelle Antwort von Apple:

Engineering verfügt über folgendes Feedback für Sie:

Das Projekt baut erfolgreich mit Xcode 8.3 Beta 2.

Bitte überprüfen Sie dieses Problem mit dem Xcode 8.3 Beta und Aktualisieren Sie Ihren Fehler Bericht bei https://bugreport.apple.com/ mit Ihren Ergebnissen.

Xcode 8.3 beta 2 (8W120l) https://developer.apple.com/download/ Posted Datum: 6. Februar 2017

Danke. Vielen Dank für Ihre Unterstützung

uns zu helfen entdecken und isolieren Fehler in unseren Produkten.

Mit besten Grüßen,

Apple-Entwickler-Support Worldwide Developer Relations

0

Ich fand einige Probleme mit Ihrem Code den Schritten folgen. Ich hoffe, dies wird Ihr Problem lösen.

1). Gehe zu Build-Einstellungen und suche nach "Defines Module" ändere seinen Wert in YES.

2). Gehen Sie zu 'HatchbackCar.h' und entfernen Sie '@protocol CarProtocol;' und "CarProtocol" von ihm.

3). Jetzt Projekt löschen.

4). Gehe zu 'HatchbackCar.m' füge folgenden Code hinzu.

@interface HatchbackCar() <CarProtocol> 

@end 

5). Jetzt Projekt noch einmal löschen.

6). Projekt erstellen

+0

Aber so wird es nicht einfach sein, das Objekt von HatchbackCar in einem schnellen Array vom Typ CarProtocol zu verwenden, weil der Compiler die private Implementierung nicht sehen kann. Zum Beispiel: var Autos = [CarProtocol]() lassen hyundaiSantro = HatchbackCar ("Huyndai Santro", Räder: 4) cars.append (hyundaiSantro) – Tushar

+0

i versucht haben, Fehler im Code zu lösen, wie Sie gefragt. weiter nicht den Code getestet. –

+0

Ich schätze wirklich Ihre Lösung für die Arbeit in Xcode 8.2. Vielen Dank Alter :) – Tushar