Instanziierungsanwendung habe ich eine verschachtelte Klasse wie folgt definiert:eine verschachtelte Klasse mit NSClassFromString in schnellen
@objc class A {
@objc class B{
}
}
und ich brauche A.B
mit NSClassFromString
instanziiert. Ich konnte es für die einfache Klasse A
tun, aber wenn ich an den NSClassFromString
Parameter die .B
Zeichenfolge anschließe, gibt es einfach null zurück.
NSClassFromString("\(appName).A") // works...
NSClassFromString("\(appName).A.B") //doesn't work.
Ich nehme an, dass ... da geschachtelte Klasse in Objective-c die NSClassFromString
nicht verfügbar ist, funktioniert einfach nicht für verschachtelte Klassen in diesem Fall gibt es eine andere Art und Weise eine verschachtelte Klasse aus einer Zeichenfolge zu initialisieren?
// EDIT
ist gespannt, wie die inverse Funktion NSStringFromClass
kehrt anderes Format als für eine Standard-Klasse und eine verschachtelte Klasse ausgeführt:
"myApp.A" <---- STANDARD CLASS (A)
"_TtCC15myApp13A6B" <----- NESTED CLASS (A.B)
Wie Sie das Format sehen völlig anders. Was ist das _TtCC15
? Warum zum "." wurde entfernt? Ich nehme an, dass das Weitergeben der Klasse in diesem Format an NSClassFromString
funktionieren sollte.
Versuchen Sie, Klasse B als @objc wie folgt zu markieren: '@objc Klasse B {}'. –
Schon versucht ... Ich update die Antwort aber, danke für das Aufzeigen! – MatterGoal
Versuchen Sie, 'class B' mit' public' zu versehen. Wie diese @objc öffentliche Klasse B – NSDmitry