String 인코딩
Objective-C의 string의 문자 인코딩에 있어 많은 함수를 제공한다.
|
endcoding을 통한 string 생성
|
|
char *utf8String = /* assume this exists */ ;
NSString *stringFromUTFString =
[[NSString alloc] initWithUTF8String:utf8String];
char *macOSRomanEncodedString = /* assume this exists */ ;
NSString *stringFromMORString =
[[NSString alloc] initWithCString:macOSRomanEncodedString
encoding:NSMacOSRomanStringEncoding];
NSData *shiftJISData = /* assume this exists */ ;
NSString *stringFromShiftJISData =
[[NSString alloc] initWithData:shiftJISData
encoding:NSShiftJISStringEncoding]; |
- C string를 initWithCString:encoding 과 같은 메소드를 사용하여 NSString 생성
- C string의 문자 인코딩을 정확히 명시할 것!
|
UTF-8로 인코딩된 NSString과 ASCII 사이의 변환 |
|
unichar ellipsis = 0x2026;
NSString *theString =
[NSString stringWithFormat:@"To be continued%C", ellipsis];
NSData *asciiData =
[theString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *asciiString =
[[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];
// NSLog를 통한 결과
// Original: To be continued… (length 16)
// Converted: To be continued... (length 18) |
- NSString은 C string을 직접 사용하기 위한 다음과 같은 많은 메소드 제공
(stringWithCString:,initWithCString:,
initWithCString:length:, initWithCStringNoCopy:length:freeWhenDone: 등)
- 위의 메소드들은 default C string을 사용하기 때문에 변환하는 과정에 많은 정보가 손실될 수 있음
더 자세한건 나중에...
출처 : http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html#//apple_ref/doc/uid/20000148-CJBCJHHI
저도 막연하게 될것 같다라고만 생각했었는데 호출이 되지 않는군요.
잠깐 검색해보니 비슷한 의문사항인것 같은데 도움이 되시기를 바랍니다.
핵심은 결국 객체에 대한 포인터를 이용하여 해당 함수를 호출해주는거네요.
#import <Cocoa/Cocoa.h>
id refToSelf;
@interface SomeClass: NSObject
@end
@implementation SomeClass
- (void) doNothing
{
NSLog(@"Doing nothing");
}
@end
int otherCfunction()
{
[refToSelf doNothing];
}
int main()
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
SomeClass * t = [[SomeClass alloc] init];
refToSelf = t;
otherCfunction();
[pool release];
}