2016-08-26 1 views
0

NSKeyedArchiver을 사용하여 사용자 기본값으로 데이터를 저장합니다. 때때로 데이터를 저장하기 위해 내 메서드를 호출 한 후 데이터가 실제로 보관되고 저장되기 전에 약간의 지연이있을 수 있습니다.사용자 기본값으로 저장할 때 완료 블록 추가

오늘의 확장 프로그램에서이 데이터를 읽으며 데이터가 저장되면 확장 프로그램을 업데이트하려고합니다.

완료 블록을 추가하거나 데이터 저장을 완료 할 때 알림을 받으려면 어떻게합니까?

+0

오브젝트가 변경 불가능하거나 스레드로부터 안전하다고 가정 할 때, 그랜드 센트럴 디스패치를 ​​사용하여 백그라운드 대기열에서 NSKeyedArchiver를 호출하고 완료되면 메인 스레드에 메시지를 보냅니다. – EricS

답변

0

NSKeyedArchiver가 동기 작업이 아닙니까? 완료 될 때까지 기다릴 필요는 없습니다. 데이터가 완전히 보관 된 후에 만 ​​다음 줄로 진행합니다.

NSKeyedArchiver.archiveRootObject (책, TOFILE : "/ 경로// 아카이브하는 방법"), 아카이브 작업이 완료된 후 뭔가를 콜백을 사용할 수

최악의 경우.

+0

동기 기본값으로 사용자에게 저장이 저장되어 있습니까? –

+0

예, NSUserDefaults에 저장하는 것은 동 기적입니다. 따라서 UI에 약간의 일시 중지가 생길 수 있습니다. 백그라운드에서이를 수행하고 완료되면 완성 블록을 호출하는 것은 또 다른 문제입니다. –

관련 문제