2017-09-16 6 views
0

많은 데이터를 저장하는 앱이 상당히 확장되었습니다. CLLocation 것들, 배열, CGPoints 등등. 때때로 이러한 모든 변수를 장치에 저장해야하므로 UserDefaults를 사용합니다. 그러나 ViewControllers를 통해 전환하고 단순히 앱 (일정한 데이터 변경 => 저장)을 사용하여 일정 시간이 지나면 모든 것이 천천히 실행되는 지점에 도달합니다.UserDefaults를 여러 번 설정하면 표시 속도가 느려짐

이제 3 개 이상의 2 차원 배열이 있고 UserDefaults에 저장하려는 5 개의 Inits가 있다고 가정 해 보겠습니다.

UserDefaults.standard.set(data, forKey: "UDdata"). 

그래서 내가 데이터를 변경할 때마다, 나는 특정 코멘트를 통해 변경 :

때마다 나는 같은 명령에 의해 "업데이트"그 변수 중 하나 변경합니다. 나는 그것을 할 때마다 어떻게 든 UDdata에 대한 이전 데이터를 없애고 같은 키 문자열로 설정해야한다고 생각한다. 그 문제에 대한 정보가 유용 할 것입니다. 미리 감사드립니다.

+3

'UserDefaults' 앱 데이터를 저장하는 적절한 장소가 아니다. 환경 설정과 같은 작은 값을 의미합니다. – rmaddy

+0

@rmaddy가 맞다면, 나는 여기 UserDefaults를 오용하는 것이 당신의 문제라고 생각하지 않습니다. 어쨌든, 나는 그것이 일반적인 메모리 유출이라는 생각이 더 많을 것입니다. –

+0

Instruments.app에서 'time profile'악기를 사용하여 직접 문제를 조사 할 것을 강력히 권장합니다. –

답변

2

이유는 Userdefaults를 잘못 사용했기 때문입니다. 그들은 첫 번째 실행, 환경 설정 등을 감지하는 플래그와 같은 작은 값을 저장해야합니다. Userdefaults에 데이터를 저장하는 대신 CoreData 또는 SQLite를 사용하십시오. 어느 쪽이 더 사용하기 쉬운 방법입니다.

CoreData : https://www.raywenderlich.com/145809/getting-started-core-data-tutorial

SQLite는 : https://www.raywenderlich.com/123579/sqlite-tutorial-swift