NSUserDefault 개체에 정수 값을 전달하여 앱을로드 할 때 사용할 저장소로 사용합니다. I HAD 정수 값을 부동 소수점으로 전환 할 때까지 완벽하게 작동합니다. 그것은 많은 문제를 야기 시켰습니다. 그래서 저는 접근법을 재조정했고, 정수의 안전에 대한 명령을 내 렸습니다 ... 아니면 생각했습니다.NSUserDefault가 전달한 값을 등록하는 데 몇 초가 걸립니까?
이전에 값을 저장하면 즉시 시뮬레이터를 닫을 수 있었고 콘솔은 올바르게 저장된 번호를 문제없이 빠져 나갈 수있었습니다. 그 바보 같은 float 혼란 이후 (지금 내 NSUserDefault 객체를 손상시킬 수 있습니까? 그냥 바보 같아요 ...), 올바른 번호를 표시하는 것은 다소 도박입니다.
나는 많은 NSLogs를 거쳤으며, 내가 save 할 때 저장 한 값이 UserDefault 클래스의 set 메소드에 올바르게 전달되고 있는지 확인할 수있다. 설정 방법은 제대로 값을 가져옵니다하고 그래서 같이 NSUD 객체에 설정합니다
[self setObject:[NSNumber numberWithInteger:num] forKey:savedNum];
나는 그 객체 제대로 값 밖으로 콘솔 인쇄에 get 메소드를 실행합니다. 앱이로드 될 때, 방금 테스트 한 동일한 get 메소드를 호출하지만 항상 올바른 결과를 반환하지는 않습니다. 때때로, 이전에 저장 한 값이 표시됩니다.
앱을 닫기 전에 저장 버튼을 누르고 5 초 정도 기다렸다가 이전에는 제대로 작동했지만 드물게 발생했습니다. 10 초를 기다리면 올바른 번호가 울립니다.
왜이 작업과 관련이 있습니까? 나는 단지 이것이 어제 정확하게 올바르게 작동했기 때문에 이것이 왜 일어나고 있는지에 대한 완전한 상실에 이르렀습니다 ...
어떤 생각이나 의견을 부탁드립니다 !!
잘 모르겠습니다. 어떻게 동기화합니까? – Jerry
전화가 잘되었지만 플래시로 쓰여지는 것만 제어한다고 생각합니다. (문서에 따르면) "메모리 캐시 (in-memory cache)"를 유지합니다. 즉, 리드 아웃시 일관성을 유지해야합니다. – Brad
@Jerry Do [nsudobjectnamehere synchronize]. –