Вы можете использовать NSScreen
, чтобы получить размеры подключенного дисплея (ов) в пикселях, но это не даст вам физического размера / PPI дисплея, и на самом деле я не думаю, что есть какие-либо API который сможет сделать это надежно.
Вы можете запросить у окна разрешение:
NSDictionary* deviceDescription = [window deviceDescription];
NSSize resolution = [[deviceDescription objectForKey:NSDeviceResolution] sizeValue];
В настоящее время это даст вам NSSize
из {72,72}
для всех экранов, независимо от их фактического PPI. Единственное, что делает это изменение значения, - это изменение коэффициента масштабирования в утилите Quartz Debug, или если Apple когда-либо включит независимый от разрешения пользовательский интерфейс. Вы можете получить текущий коэффициент масштабирования, позвонив по номеру:
[[NSScreen mainScreen] userSpaceScaleFactor];
Если вы действительно должны знать точное разрешение (и мне было бы интересно узнать, почему вы так думаете), вы можете создать процедуру калибровки экрана и попросить пользователя измерить линию на экране с помощью реальной физической линейки. Да, грубо, но это сработает.