Ich schreibe ein SIMBL-Plugin für Chrome und erhalte eine bestimmte Instanz mit einem unbelichteten Typ, der in C als NSConcreteValue
geschrieben ist. Ich kann es nicht auspacken oder Selektoren darauf ausführen, aber ich kann seinen Typ String mit [myInstance objCType]
erhalten.Kann ich NSConcreteValue auf seinen objCType umwandeln?
Der Typ, über den ich spreche, ist GURL
. Hier
ist ein Code:
NSArray* tabViews = [tabStripController performSelector:@selector(tabViews)];
for (id tabView in tabViews) {
id tabController = [tabView valueForKey:@"controller_"];
id tabTitle = [tabController valueForKey:@"toolTip"];
id tabUrl = [tabController valueForKey:@"url_"];
NSLog(@"%@", tabTitle);
NSLog(@"%s", [tabUrl objCType]);
}
Die Registerkarte Titel ist kein Thema, da es eine NSString
ist. dieses
[tabUrl objCType]
kehrt:
{GURL={basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >={__compressed_pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, std::__1::allocator<char> >={__rep=(?={__long=QQ*}{__short=(?=Cc)[23c]}{__raw=[3Q]})}}}B{Parsed={Component=ii}{Component=ii}{Component=ii}{Component=ii}{Component=ii}{Component=ii}{Component=ii}{Component=ii}^{Parsed}}{unique_ptr<GURL, std::__1::default_delete<GURL> >={__compressed_pair<GURL *, std::__1::default_delete<GURL> >=^{GURL}}}}
GURL
hat eine Eigenschaft namens spec_
den Ich mag würde, um den ASCII-String der GURL Instanz zu erhalten.
Hier ist GURL: https://chromium.googlesource.com/chromium/src/+/lkgr/url/gurl.h
Ist der ObjCType String von irgendeiner Hilfe?
Ich denke nicht, nicht ohne Code zu schreiben, der das C++ ABI kennt. Ich denke, ein besserer Plan, um das zu untersuchen, ist das Kompilieren als ObjC++ und/oder das Erstellen eines ObjC-Wrappers für 'GURL'. –
Danke Josh. Sie sagen also, dass wenn ich als ObjC++ kompiliere, meine Klasse Kenntnisse über die enthaltenen C++ - Typen haben wird? Auf jeden Fall denke ich, dass ich @ @ import-Anweisungen ablegen muss, da beim Speichern als .mm der Fehler "Module sind deaktiviert" beim Kompilieren angezeigt wird. – ohdeerdog
Ich denke schon, aber Sie müssen wahrscheinlich auch die Kopfzeile hinzufügen. Ich wünschte, ich könnte genauer sein: Es ist nicht etwas, was ich tatsächlich gemacht habe, fürchte ich. Aber das ist die Richtung, in die ich schauen würde, wenn ich daran arbeiten würde. –