Могу ли я привести NSConcreteValue к его objCType?
Я пишу плагин SIMBL для Chrome, и я получаю конкретный экземпляр с неэкспонированным типом, который написан на C как NSConcreteValue
, Я не могу развернуть его или выполнить селекторы на нем, но я могу получить строку типа с [myInstance objCType]
,
Тип, о котором я говорю, GURL
,
Вот некоторый код:
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]);
}
Название вкладки не является проблемой, так как это NSString
,
[tabUrl objCType]
возвращает это:
{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
имеет свойство под названием spec_
который я хотел бы получить, чтобы получить строку ASCII экземпляра GURL.
Вот GURL: https://chromium.googlesource.com/chromium/src/+/lkgr/url/gurl.h
Строка objCType помогает?
1 ответ
NSConcreteValue
это частный подкласс NSValue
,
Я предлагаю вам бросить на NSValue
а затем использовать NSValue
публичный API.
Если вы хотите быть в большей безопасности, окружите его if ([myObj isKindOfClass:[NSValue class]]) {}
,
Что касается извлечения типов C++ из NSValue
, этот ответ показывает, как это сделать. По сути, вы просто делаете свою переменную и затем вызываете getValue:&myVar
как обычно. Вам, конечно, придется скомпилировать как Objective-C++ (используйте .mm
расширение) и импортируйте соответствующий заголовок.