[Swift] Data, NSData 정리

어흥·2024년 8월 6일

Swift

목록 보기
27/28

최근 바이트 배열을 다룰 일이 생기면서 Data, NSData를 사용한 적이 있다.

앞으로 파일을 압축하거나 해제할 때 또는 네트워크 통신할 때 사용할 일이 또 생길 거 같아서 이참에 기록해야지~~

NSData

Objective-C 기반

이름으로 알다시피 NSData는 Objective-C의 Foundation 프레임워크에서 제공되는 클래스입니다. Swift에서도 사용 가능하며, 특히 Objective-C와의 호환성이 필요한 상황에서 자주 사용됩니다.

불변(Immutable)

NSData는 기본적으로 불변(immutable)입니다. 데이터를 생성한 후에는 수정할 수 없으며, 수정이 필요하다면 가변(NSMutable) 버전인 NSMutableData를 사용해야 합니다.

참조 타입(Reference Type)

NSData는 클래스로 구현되어 있습니다. 참조 타입으로, 객체를 복사해도 동일한 데이터를 참조합니다. 이로 인해 복사 비용이 낮지만, 메모리 관리에 주의가 필요합니다.

저장 가능한 크기

  • 이론적으로 NSData는 약 8 엑사바이트(EB, 1 EB = 10¹⁸ 바이트)까지 데이터를 저장할 수 있습니다.

압축 & 압축 해제

압축 및 압축 해제 기능을 제공하고 있습니다.

  1. 압축(Compressing)
    compressed(using:) 메서드를 사용하여 데이터를 압축할 수 있습니다. 이 메서드는 압축 알고리즘을 선택할 수 있도록 매개변수를 제공합니다.
let data = NSData(contentsOfFile: "path/to/file")
let compressedData = data?.compressed(using: .zlib)
  1. 압축 해제(Decompressing)
    decompressed(using:) 메서드를 사용하여 압축된 데이터를 원래 상태로 복원할 수 있습니다.
let compressedData = NSData(contentsOfFile: "path/to/compressedFile")
let decompressedData = compressedData?.decompressed(using: .zlib)

Data

Swift 기반

Data는 Swift의 표준 라이브러리에서 제공하는 구조체입니다. NSData와 같은 역할을 수행하면서도, Swift 환경에 최적화되어 있습니다.

가변성

Data는 기본적으로 가변(mutable)과 불변(immutable)의 두 가지 형태를 모두 지원합니다. 값 타입(value type)이며, 필요에 따라 데이터를 수정할 수 있습니다.

값 타입(Value Type)

Data는 값 타입으로, 데이터를 복사할 때 객체가 복제됩니다. 이로 인해 데이터의 수정이 다른 인스턴스에 영향을 미치지 않습니다.

Foundation과의 호환성

Data는 NSData와 상호 변환이 가능하며, 필요에 따라 NSData로 변환하여 참조 타입으로 사용할 수 있습니다.

0개의 댓글