Develop

[ios] NSData 클래스에 대해 (NSData <-> char*)

by hooni posted Apr 23, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
# NSData 클래스
파일처리 등에 이용하는 바이트 배열 클래스 (1byte 기준)

메서드
-(id)dataWithBytes : (const void *)bytes length:(NSVinteger)length
          생성자                배열           주소                     개수
-(id)initWithBytes : (const void *)bytes length:(NSUinteger)length
       초기화             어떤 타입의 포인터도 상관없음, integer를 넣으면 깨질 수 있음.
-(id)dataWithData:(NSData*)aData
          생성자
-(id)initWithData:(NSData*)aData
-(NSUinteger)length  // 
-(void)getBytes:(const void*)bytes
                         bytes에게 주소를 리턴
-(NSString *)description

ex) NSString 과 NSData 와 char * 사이의 변환
#import <foundation/foundation.h>
/* 안써도 됨 
#import <foundation/NSString.h>
#import <foundation/NSData.h>
*/
int main(int argc, char * argv[])
{
    unsigned char buf[20]; // 저장하기 위해 생성 
    NSString * message = @"Test Conversion";
    const char * str = [message UTF8String]; // 일반 char type 으로 변환 

    // 생성자이므로 메모리할당이 필요없음
    NSData * myData = [NSData dataWithBytes:str length:strlen(str)];

    // NSString => NSData    // 문자의 개수 리턴 
    [myData getBytes:buf]; // char 배열로 변경 
    int i;
    for (i=0; i<[myData length];i++)
    {
        NSLog(@"%c",buf[i]); 
    }
    system("pause");
    return 0;
}


# NSMutableData 클래스
변경가능한 Data 클래스
삽입, 삭제(remove로 시작), 갱신에 관련된 메서드가 존재
인덱스 위치에 있는 인스턴스를 삭제하고 새로운 인스턴스를 삽입

NSData 로부터 상속됨
add : 뒤에 삽입
insert : 위치에 삽입