NSScreenNumber меняется (случайно)?

В моем приложении мне нужно различать разные дисплеи, что я делаю с помощью ключа 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]);

Это начинает расстраивать, буду признателен за любую помощь/идеи, спасибо!

5
задан Robin 28 December 2011 в 20:53
поделиться