В моем приложении мне нужно различать разные дисплеи, что я делаю, используя ключ NSScreenNumber в словаре deviceDescription, предоставленном NSScreen. До сих пор все работало безупречно, но теперь внезапно я иногда получаю другой идентификатор экрана для моего основного экрана (это ноутбук, и я не подключал второй экран в течение нескольких месяцев, это всегда одно и то же оборудование). Идентификатор раньше был 69676672, но сейчас большую часть времени я получаю 2077806975.
Сначала я подумал, что могу как-то неправильно истолковать NSNumber, но, похоже, это не так, я также проверил, используя функцию CGMainDisplayID (), и получил то же значение. Что еще более странно, так это то, что некоторые приложения Apple все еще имеют старый идентификатор: например, ссылка на изображение рабочего стола в его конфигурационном файле с использованием идентификатора экрана, а при обновлении образа рабочего стола приложение Apple для изображений рабочего стола использует «правильный» (= старый) идентификатор.
Я начинаю задаваться вопросом, могло ли быть изменение в недавнем обновлении (10.7.1 или 10.7.2), которое привело к изменению, кто-нибудь еще заметил что-то подобное или была эта проблема раньше?
Вот код, который я использую:
// This is in an NSScreen category
- (NSNumber *) uniqueScreenID {
return [[self deviceDescription] objectForKey:@"NSScreenNumber"];
}
А для получения int:
// Assuming screen points to an instance of NSScreen
NSLog(@"Screen ID: %i", [[screen uniqueScreenID] intValue]);
Это начинает расстраивать, ценю любую помощь / идеи, спасибо!