2012년 2월 10일 금요일

NSString&NSData


C언어의문자열은 char를기준으로 한 ASCII문자열입니다.
하자만Objective- C언어의 문자열클래스가 제공하는 문자열은 unichar유니코드 표준에따른 멀티바이트 문자입니다.
1.String 클래스의종류
-NSString: 내용을 변경할수 없는 문자열 클래스
-NSConstantString: 문자열상수로 주소를 변경할 수 없는 문자열 클래스
-NSMutableString: 내용을변경할 수 있는 문자열 클래스

NSString객체에 문자열을 대입할때는 NSConstantString 타입을대입할 때는 일반 value
변수처럼직접 대입이 가능하며 리턴도 가능합니다.
단주의할 점은 출력할 때 %s를사용하면 안된다는 점입니다.
%s를사용하게 되면 ascii문자(8비트)단위로 읽어서문자열을 출력하므로 이상한 문자열을 출력하게될것입니다.
이때는 %@를이용해서 출력해야 합니다.
%@를이용하게 되면 지정된 인스턴스에 description메시지를 전송하여그 메시지의 수행 결과를 리턴 받아서 출력하게 됩니다.



2.NSString 의인스턴스 생성과 문자 코드 변환
+(id)stringWithString:(NSString *)nsstring
nsstring으로인스턴스를 생성해서 리턴

-(id)initWithString:(NSString *)nsstring
nsstring으로초기화

-(NSUinteger)length
문자의개수 리턴

-(id)initWithUTF8String:(const char *)bytes
널문자로 끝나는 형식의 C언어문자열에서 정보를 복사한 후 초기화

-(constchar *)UTF8String
C언어문자열을 가리키는 포인터를 리턴


-(NSString*)stringWithString:(NSString *)nsstring
메모리를할당하고 nsstring으로초기화하는 생성자의 역할을 수행 – new와같은 역할
-(NSString*)stringByAppendingString: (NSString *)nsstring
nsstring을호출하는 인스턴스에 결합
-(BOOL)isEqualToString:(NSString *)nsstring
문자열의값이 같은지 여부를 리턴
-(NSComparisonResult)compare: (NSString *)nsstring
크기비교를 해서 NSComparisonResult로리턴
NSComparisonResult는열거형입니다.
-(NSString*)uppercaseString
대문자로변환해서 리턴
-(NSString*)lowercaseString
소문자로변환해서 리턴

3.NSString의 부분문자열 얻기
문자열을부분적으로 리턴 받을 수 있습니다.
-(NSString*)substringToIndex:정수
앞에서부터정수만큼 리턴
-(NSString*)substringFromIndex:정수
정수번째부터 리턴
-(NSString*)substringWithRange: : NSMakeRange(숫자1,숫자2)
숫자1부터숫자2까지리턴
-(NSRange)rangeOfString:(NSString *)nsstring
nsstring의위치와 개수를 리턴
NSRange는구조체로 locationlength를가지고 있습니다.

===============================================
4.NSMutableString 클래스
NSString으로부터상속받아서 만들어지며 추가 및 삽입 및 삭제 등의메서드가 추가되어 있습니다.
문자열의내용을 변경할 수 있는 클래스
이클래스의 인스턴스는 문자열의 내용이 변경되도 주소가변경되지 않습니다.

================================================
5.NSData 클래스
이클래스는 바이트 배열을 다루는 클래스입니다.
파일입출력이나 네트워크에서는 문자열을 바이트 단위로사용해야 하는 경우가 있습니다.
이러한경우 NSString 만으로모든 처리를 할 수는 없습니다.
이런경우 사용되는 클래스가 NSData클래스입니다.

-(id)dataWithBytes:(const void *)bytes (NSUinteger)length
length만큼 바이트를 할당해서메모리를 할당
-(id)initWithBytes:(const void *)bytes length:(NSUinteger)length
bytes가지정한 위치부터 length까지로초기화
-(id)dataWithData:(NSData *)aData
aData를복사해서 메모리를 할당
-(id)initWithData:(NSData *)aData
aData의내용으로 초기화해서 리턴
-(NSUinteger)length
길이를리턴
-(cosst void *)bytes
포인터를리턴
-(NSString *)description
문자열로리턴

==========================================================
6.NSMutableData 클래스
변경가능한 Data 클래스입니다.
데이터의추가 및 삭제 등의 메서드가 더 존재 합니다.