2010-12-03 4 views
1

싱글 톤의 첫 번째 인스턴스가 생성 될 때 생성되는 NSArray가있는 싱글 톤을가집니다. 이 배열을 언제 디스크에 저장할 것인가? Apple 문서를 확인한 결과 dealloc에 ​​있어서는 안되지만 어디서 말하지는 않는다고합니다. 그래서 배열이 수정 될 때마다 디스크에 쓰려고합니까? 이것은 낭비처럼 보인다?배열을 싱글 톤으로 디스크에 저장

답변

3

일반적으로 상태가 변경된 시간에 가까운 상태를 저장해야합니다. 저장하는 상태의 양이 매우 적은 경우 응용 프로그램 대리인 -applicationWillResignActive : 메서드가 호출 될 때까지 기다릴 수 있습니다. 또는 NSNotificationCenter에 싱글 톤 등록을하여 UIApplicationWillResignActiveNotification을 관찰 할 수 있습니다. 그런 다음 저장하십시오.

배열이 매우 큰 경우 저장 빈도를 줄일 수 있습니다. 그러나 어레이를 디스크에 기록하는 데 얼마나 오랜 시간이 걸릴지 염두에 두어야합니다. 응용 프로그램이 사임 한 상황에 따라 디스크에 쓸 시간이 많지 않을 수 있습니다.

작성해야 할 최대 데이터 양을 잘 알고 있습니까? 이것은 제약이 있습니까 아니면 개방적입니까?

+0

글쎄, 사용자가 tableView에서 셀을 재정렬 할 때마다 (그리고 실제로는 2 개의 NSArray가있다) 싱글 톤의 배열이 일치하도록 업데이트 될 때마다 사용자는 한 번에 둘 이상의 행을 다시 정렬 할 가능성이 있지만 호출 될 것이다. 모든 행이 이동하므로 사용자가 행을 이동하지 못하게하고 앱을 디스크에 저장하고 나중에 다른 행을 밀리 초 후에 이동 한 다음 다시 디스크에 저장해야합니다. –

+0

최근에 커밋 한 사용자의 개념이 있습니까? '완료'버튼과 같은 변경 사항이 있습니까? 그 문제에 대한 최근 변경 사항을 취소 할 수있는 "취소"가 있습니까? – westsider

+0

어떻게 그걸 잊어 버리겠습니까? 왜 나는 질문을 했습니까 :) –

관련 문제