내 애플리케이션에서는 NSScreen에서 제공하는 deviceDescription 사전의 NSScreenNumber 키를 사용하여 다른 디스플레이를 구별해야합니다. 지금까지 모든 것이 완벽하게 작동했지만 갑자기 내 메인 스크린에 다른 화면 ID가 표시되는 경우가 있습니다 (랩탑이며 수개월 만에 두 번째 스크린이 부착되지 않고 항상 동일한 하드웨어). id는 69676672 였지만 지금은 대부분 2077806975가됩니다.NSScreenNumber가 (임의로) 변경됩니까?
처음에 NSNumber를 어떻게 든 오해 할 수도 있다고 생각했지만, 그럴 것 같지 않습니다. 또한 CGMainDisplayID를 사용하여 검사했습니다.() 함수와 나는 같은 값을 얻는다. 심지어 더 이상한 것은 애플 애플리케이션 중 일부가 여전히 이전 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]);
는, 어떤 도움/아이디어, 감사 감사
여기 내가 사용하는 코드입니다!
컴퓨터가 절전 모드에서 깨어날 때 디스플레이가 다시 열거되기 때문에 투표 사이에 잠자기 모드로 들어갔습니까? –
예 기계는 두 번 투표 사이에 여러 번 재부팅되었습니다. 그리고 그 값은 예고없이 변경 될 수 있음을 알고 있습니다 (자주 발생하지 않아야 함에도 불구하고 문서에서 그렇게 말합니다). 나에게 혼란스러운 점은 API를 사용하는 타사 앱이 Apple 소프트웨어 (예 : Dock의 데스크탑 이미지 관리 부분)가 이전 값을 얻는다는 것입니다. 하지만 그들은 다른쪽으로 캐싱을하거나 다른 API를 사용해야합니다. – Robin
Apple, Robin과 관련된 버그입니다. – valexa