Frage

Ich schreibe objektiv-c ++ in xcode für iOS. Mein Projekt sind hauptsächlich C ++-Klassen und einige Objektivklassen auf höchstem Niveau. Meine C ++-Klassen enthalten objektive UI-Elemente und ich brauche sie, um UI-Ereignisse zu erhalten. Kann ein UI -Element eine C ++ - Mitgliedsfunktion direkt aufrufen? IE gibt es ein Äquivalent zu diesem Aufruf für eine C ++ - Funktion:

[control addTarget:object action:@selector(action:) forControlEvents:event];    

Von dem, was ich verstehe @selector Ich werde mir hier nicht helfen. Ich würde einen anderen Weg brauchen, um die Steuerung meine Mitgliederfunktion zu machen - existiert man?

Im Moment verwende ich eine Objektiv-C-Empfängerklasse, ein Mitglied meiner C ++-Klassen, das UI-Ereignisse erhält und dann meine C ++-Klasse angemessen aufruft, aber dies scheint eine Kreisverkehrsmethode zu sein, um dies zu erreichen. Wenn das, was ich beschrieben habe, nicht möglich ist, gibt es einen besseren Weg, das zu tun, was ich versuche zu tun?

War es hilfreich?

Lösung

Ich denke, Sie haben bereits die einfachste Lösung entdeckt. Sie können diese Funktionalität weiter zusammenschließen, indem Sie die OBJ-C/C ++-Brücke in einer C ++-Basisklasse implementieren und eine Ihrer Geschäftslogikklassen daraus abgeben.

Dort ist Eine weitere Option, die dies auf der Ziel-Laufzeitebene der Ziel-C-Laufzeit tun soll. Lassen Sie Ihre C ++-Klasse eine neue Objektiv-C-Klasse mit generieren objc_allocateClassPair(), Fügen Sie eine Methode zum Umgang mit Ihrer Aktion mit hinzu mit class_addMethod(), usw. (siehe die Objektiv-C-Laufzeitreferenz) Ich sehe keinen offensichtlichen Grund, warum Sie diesen Weg gehen möchten, aber es ist gut, sich dessen bewusst zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top