흔히 기본자료형(자주쓰이는 CGPoint,CGRect 등)들을 NSArray,Dictionary등에 쓸려면 객체화를 해주어서 담아야 하는데 그러한 과정을 래핑(Wrapping)이라고 하나보다. 그와 관련하여 짧으면서도 핵심을 짚어준 포스트가 있어 소개합니다.
1. IPhone어플 개발노트 - Premitive Wrapping : NSValue, NSNumber - by.mskyt's tistory
배열과 딕셔너리를 활용한 구조를 설계하는 도중에 CGPoint를 배열에 넣을수 있는 방법을 찾던중, NSValue에 대하여 알게 되었습니다.
평소 NSNumber을 래핑하여 배열에 넣어본적은 있었지만, NSValue의 존재를 모르고 있어서 시도해보지 못했네요.
NSValue *nv = [NSValue valueWithCGPoint:ccp(10,20)]; NSLog(@"nv : %@",nv); NSLog(@"nv : %f,%f",[nv CGPointValue].x,[nv CGPointValue].y); NSArray *ary1 = [NSArray arrayWithObject:nv]; //= NSArray *ary1 = [NSArray arrayWithObject:[NSValue valueWithCGPoint:ccp(10,20)]]; //= NSArray *ary1 = @[[NSValue valueWithCGPoint:ccp(10,20)]]; XCode4.4(LLVM4.0)부터 추가된 리터널 표기법에 따르면 간략하게 표현가능 NSLog(@"ary1 : %f,%f",[ary1[0] CGPointValue].x,[ary1[0] CGPointValue].y);
위처럼 값들이 잘 들어갑니다. 찾아보기로는 CGRect를 비롯한 다양한 구조체도 래핑하여 사용할수 있다고 하는데, 아직은 그 단계가 아니라서 해보지 않았읍니다. 크크..
기존 CGPoint와는 문법이 조금 다른데 꼭 ! '[nv CGPointValue]'와 같은 형태로 사용하시기 바랍니다.
'Dev > Objective-C' 카테고리의 다른 글
Objective C(오브젝티브 씨)에서의 Class type Check(클래스 타입 확인) (0) | 2013.03.25 |
---|---|
NSDictionary, NSMutableDictionary 사용법, 메소드 (0) | 2013.03.19 |
NSDictionary와 NSArray의 표현 +리터널 표기법 (0) | 2013.03.19 |
(링크) [Obj-C] int, NSInteger, NSNumber의 차이 (0) | 2013.03.19 |
(펌) NSMutableArray, NSArray, 배열의생성과요소접근, 배열 (0) | 2013.03.18 |