2012-07-26 2 views
0

나는왜 아카이브합니까? 성능을 어떻게 향상시킬 수 있습니까?

@interface MyApplicationData : NSObject <NSCoding, NSCopying> { 
    NSMutableArray* items; 
    NSMutableArray* categories; 
} 

이 스레드를 참조하시기 바랍니다 응용 프로그램에서 물건을 보관하는 NSCoder을 사용하는 예제의 일부를 보았다. How to use NSCoder

왜 앱 성능이 향상 되었습니까? 그것은 당신의 어플리케이션에서 더 많은 일을하는 것이 아닙니까? 누구나 왜 그리고 언제 아카이브를 사용하고 싶은지 말할 수 있습니까?

편집 : 책에서 인용, 당신의 캐시 저장하기위한 방법의 밑에 LIMIT-을 밀어에서 iOS 5 프로그래밍 : 데이터를 "캐싱 또는 저장하여 데이터 모델 (NSKeyedArchiver 사용) 또는 사용의 아카이브로 저장하여 중 하나를 수행 할 수 있습니다 원시 SQLite 나 Core Data와 같은 객체 직렬화 프레임 워크와 같은 고급 데이터베이스 ""... NSKeyedArchiver는 NSCoding 프로토콜을 구현하여 구현됩니다. "

NSCoding 또는 NSCoder를 캐싱에 사용할 수 있으며 성능이 향상 될 것으로 생각했습니다. 캐싱에 사용하는 것이 좋지 않은가요? 사전에

감사합니다.

+3

'NSCoding'을 사용하면 성능이 향상된다는 개념은 어디에서 왔습니까? – dasblinkenlight

+0

책에서 캐싱 또는 저장 중 데이터 모델 (NSKeyedArchiver 사용)의 아카이브로 저장할 수 있습니다 – tipsywacky

답변

1

왜 앱 성능이 향상 되었습니까?

글쎄, 일부 컨텍스트가 필요합니다. 직렬화가 "성능을 향상시킬 수 있습니다." 다른 직렬화 된 표현보다 성능을 향상시킬 수 있습니다. 차이를 만들 수도 있고, 중요하지 않을 수도 있습니다.

귀하의 응용 프로그램에서 더 많은 것들을하고 있지 않습니까? 당신이 직렬화 된 객체는 달리 XML/PLIST에 표현되는 복잡한 구조를 가지고있는 경우

아니라, 다음 없음 - 인코딩하는 방법을 알고있는 객체가/ XML보다 훨씬 더 성능이 좋은 수 자체 를 디코딩 또는 json 또는 다른 중간 표현 (여러 가지 이유로). 관리가 더 쉬우 며 복잡한 구조를보다 쉽게 ​​표현할 수 있습니다 (중간 직렬화 표현과 비교하여).

왜 아카이브를 사용하고 싶는지 언제 말해 줄 수 있습니까?

일반적으로 개체 또는 개체 그래프의 상태를 디스크에 저장하거나 다른 컴퓨터로 전송하려는 경우.

문서 데이터가 있다고 가정하고 문서를 다시 열 때 해당 문서를 복원하려면 프로그램에서 개체 또는 개체 그래프의 상태를 나중에 올바르게 재구성하는 표현을 만들어야합니다.

2

NSCoding은 성능과는 관계가 없으므로 객체 또는 객체 그래프를 직렬화하여 영구 저장 장치에 저장하거나 네트워크를 통해 전송할 수 있습니다.

+0

그래서 보안 기능이 무엇입니까? – tipsywacky

+1

"NSCoding"의 "coding"은 "encryption"과 다른 "encoding"을 의미합니다. 그것은 보안과 관련이 없습니다. –

1

WhyA 아카이브 :

나는 사용자의 누적 행동을 기억해야하는 프로젝트를 진행하고있다. 이러한 작업은 화면에 여러 개의 사용자 지정 개체를 이동시키는 데 도움이됩니다. 사용자 정의 객체의 속성에는 현재 위치, 색상, 이웃 등이 포함됩니다. 그래서 그 객체들은 배열에 저장되었습니다. 따라서 NSCoding은 배열을 직렬화하고 보관하는 데 사용되었습니다. 다음 번에 사용자의 마지막 상태를 다시 호출해야 할 때 보관 된 파일을 읽었을뿐입니다. 이 기능이 없다면 필자는 테이블과 필드가있는 DB 유형을 만들어 개별적으로 저장해야 할 필요가 있고 내 예제에서와 같이 사용자의 현재 상태를 다시 만들 때 역순으로 수행해야한다고 생각합니다.

+0

따라서 프로그램을 종료하거나 종료해도 속성을 보관 한 후에도 사용자의 마지막 상태를 계속 기억할 수 있습니까? 올바르게 추측하면 NSCoder는 소량의 데이터를 사용할 때 좋은 옵션입니다. 그렇지 않으면 코어 데이터를 대신 사용할 수 있습니다. 파일 저장에 관해서는 NSCoder도 사용합니다. 맞습니까? – tipsywacky

+1

예, 처음입니다. 두 번째는 아닙니다. 내 대답을 약간 잘못 읽었을 수도 있습니다. Apple의 문서에서 직접 인용 한 내용은 다음과 같습니다. "이 기능은 객체 및 기타 구조가 디스크에 저장되는 보관 및 객체가 다른 주소 공간에 복사되는 배포를위한 기반을 제공합니다." 링크는 다음과 같습니다. https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html – user523234

관련 문제