Я сделал небольшое приложение, чтобы быстро менять разрешение экрана на нескольких мониторах. Я хочу показать название продукта как название монитора, и очень просто найти этот код:
NSDictionary *deviceInfo = (__bridge NSDictionary *)IODisplayCreateInfoDictionary(CGDisplayIOServicePort(dispID), kIODisplayOnlyPreferredName);
NSDictionary *localizedNames = [deviceInfo objectForKey:[NSString stringWithUTF8String:kDisplayProductName]];
if([localizedNames count] > 0) {
_title = [localizedNames objectForKey:[[localizedNames allKeys] objectAtIndex:0]];
} else {
_title = @"Unknown display";
}
Но CGDisplayIOServicePort
устарел в OS X >= 10.9, а в документации Apple нет замены. Как найти порт службы или имя продукта без использования этого метода?
Я попытался выполнить итерацию через IO-реестр и попытался использовать метод IOServiceGetMatchingServices
для поиска служб отображения, но я не очень хорошо разбираюсь в IO-реестре, поэтому я не смог найти решение.
Спасибо за помощь!