2013-10-07 2 views
7

Mountain Lion 용으로 개발 된 Mac OS X 응용 프로그램에서 작업하고 있습니다. 앱은 처음 실행될 때 몇 가지 설정 작업을 수행합니다. 그런 다음 [NSUserDefaults standardUserDefaults]에 플래그를 설정합니다. 후속 실행에서 앱은 해당 플래그가 설정되어 있는지 확인하고 설정되어있는 경우 처음 설치 작업을 수행하지 않습니다. 산 사자에 NSUserDefaults는 Mac OS X에서 데이터를 어디에 저장합니까?

, 나는 응용 프로그램에 의해 NSUserDefaults에 저장된 모든 것을 쓸어하기 위해 ~/라이브러리/환경/bundleid.plist 파일을 삭제 할 수 있었다. 그러나 최신 버전의 Mac OS X에서는 응용 프로그램이 실행될 때 해당 파일을 만들지 않습니다. 디버거에서 [[NSUserDefaults standardUserDefaults] objectForKey:@"foo"]에서 돌아 오는 값을 검사하여 데이터를 NSUserDefaults에 성공적으로 저장하고 있는지 확인했습니다.

사람이 어떻게 NSUserDefaults에 저장됩니다 내 응용 프로그램의 설정을 삭제에 관한 올바른 방향으로 날 포인트?

+1

매버릭스는 NDA 하에서 여전히, 그래서 사람이 직접 질문에 대답 할 수 의심한다. 즉, 앱이 plist를 저장하려고하는 곳을보기 위해 fs_usage (OS X의 모든 버전에서 사용 가능한 도구)를 사용해 보셨습니까? – iccir

+0

으악, 내 잘못 - 나는 매버릭스에 대한 언급을 삭제했다. – Greg

+0

그래도 안전하다고 판단됩니다. https://devforums.apple.com/message/894120 –

답변

18

매버릭스는 아직 발표되지 않은, 그래서 문제의 그 부분을 무시하고있다. Mavericks 관련 답변을 원하면 개발자 포럼에 질문해야합니다.

OS X 버전과 관계없이 기본 도메인을 삭제하는 올바른 방법은 defaults delete bundleid 또는 its programmatic equivalent입니다. ~/Library/Preferences은 구현 세부 사항입니다. 거기에 포함 된 plists 항상 최신 정보를 포함하지 않습니다. Mountain Lion 이전에 기본값 변경은 synchronize까지 개별 응용 프로그램에서 버퍼링됩니다. Mountain Lion에서는 나중에 cfprefsd 프로세스에서 메모리에 유지 관리되고 지연적으로 디스크로 플러시됩니다.

은 자세한 내용은 Core Foundation release notes for 10.8를 참조하십시오.

2016 업데이트 : NSUserDefaults의 상태로 현재 가이드 here입니다.