В моем приложении мне нужно различать разные дисплеи, что я делаю с помощью ключа NSScreenNumber словаря deviceDescription, предоставленного NSScreen. До сих пор все работало безупречно, но теперь внезапно я иногда получаю другой идентификатор экрана для моего основного экрана (это ноутбук, и я не подключал второй экран в течение нескольких месяцев, всегда одно и то же оборудование). Раньше идентификатор был 69676672, но теперь большую часть времени я получаю 2077806975.
Сначала я подумал, что, возможно, я как-то неправильно интерпретирую NSNumber, но, похоже, это не так, я также проверил с помощью функции CGMainDisplayID() и получил то же значение. Что еще более странно, так это то, что некоторые приложения Apple, похоже, все еще получают старый ID: например, изображение рабочего стола ссылается в своем конфигурационном файле на ID экрана, а при обновлении изображения рабочего стола приложение Apple использует "правильный" (=старый) ID.
Я начинаю задаваться вопросом, может ли быть изменение в недавнем обновлении (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]);
Это начинает расстраивать, буду признателен за любую помощь/идеи, спасибо!