Dev/iOS2011. 10. 5. 14:16

Property 옵션 값들이 계속 헷갈렸었는데....


@property (


  1. atomic OR nonatomic
    1. 이 두 속성중 하나를 선택하는 것으로 기본값은 atomic입니다. 이부분은 멀티스레딩에 관련된 부분으로 보통 nonatomic을 사용합니다. 자세한건 개발자 문서 참고
  2. assign OR retain OR copy
    1. setter에서 객체를 지정 받을때 
      1. assign의 경우 주소값만 지정받고
      2. retain의 경우 기존것을 release후 새로 받은걸 retain합니다.
      3. copy의 경우 기존것을 release후 새로 받은걸 copy합니다.
    2. 이부분은 setter에 관련있고 getter와는 관련 없습니다.
  3. readonly OR 없음
    1. readonly설정되면 setter가 없습니다. 말그대로 읽기 전용이죠


- 참고 - 문씨의블로그 (http://lab.smoon.kr/70)

Posted by 놀란

댓글을 달아 주세요

  1. 김태준

    `readonly OR 없음` 보다는 `readonly OR readwrite` 가 맞는 표현같습니다~.
    default가 readwrite구요~
    글 잘 보고 갑니다^^

    2016.12.29 15:25 [ ADDR : EDIT/ DEL : REPLY ]

Dev/iOS-cocos2d2011. 7. 12. 14:12

- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint

worldPoint(전체 화면상의 좌표) 값을 특정노드(스프라이트, 레이어 포함) 기준의 좌표값으로 변경


- (CGPoint)convertToWorldSpace:(CGPoint)nodePoint

특정노드(스프라이트, 레이어 포함)에서의 좌표값을 worldPoint(전체 화면상의 좌표) 기준의 좌표값으로 변경


Posted by 놀란

댓글을 달아 주세요

  1. 비밀댓글입니다

    2011.08.15 15:20 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요.

      몸 sprite 위에 얼굴 등의 sprite를 addchild 했으면, 이미 상대적인 좌표로 들어가게 되겠네요.

      - (CGPoint)convertToWorldSpace:(CGPoint)nodePoint

      이용하시면 되겠지요?

      터치 좌표는 월드 좌표인데, 몸 sprite 기준으로 상대적인 좌표값(머리 등)이 나오니 엉뚱한 터치 영역을 체크하고 있겠네요.

      [self convertToWorldSpace: 머리 sprite] 이런 식으로 레이어에서의 월드좌표 값을 가져오고 그 좌표값이 터치부분에 들어가있는지 보면 될 것 같습니다.

      그리고 다른 방법으로는 몸에 addchild 할때 터치영역을 만들어주는건 어떨까요?
      몸 sprite rect에 머리 붙일때의 최대값(최대값 가져오는건 제 포스팅에 있습니다.) 가져와서 x, y 값을 늘려주고 팔 붙이면서 오른쪽 x 값 늘려주고 해서 최종 rect 값을 터치영역으로 해서 CGRectContainsPoint 메소드로 체크해도 될 듯 싶습니다.

      저도 할때마다 헷갈려요.. ^^;;
      맞는 답변이길...

      2011.08.22 11:18 신고 [ ADDR : EDIT/ DEL ]
  2. 터치하는 좌표와 맵 이동시에 나오는 좌표가 계속 틀려서 고민하고 있었는데 덕분에 해결했습니다. 감사합니다. ^^

    2012.09.26 04:04 신고 [ ADDR : EDIT/ DEL : REPLY ]

Dev/iOS-cocos2d2011. 7. 11. 11:00

배경 등과 같은 스프라이트 이미지 2개를 나란히 붙였을 때,

가는 실선이 나타나는 것을 볼 수 있는데, 이렇게 두 이미지가 만나는 부분에 검은색 실선이 보이는 이유는 기본적으로 안티앨리어싱( anti-aliasing)이 켜져있기 때문이다.

검은색 실선을 보이지 않게 하려면 아래 코드를 이용하여 안티앨리어싱 기능을 끄면 된다.

[targetSprite1.texture setAliasTexParameters];

[targetSprite2.texture setAliasTexParameters];



Posted by 놀란

댓글을 달아 주세요

Dev/iOS2011. 6. 2. 21:56

arrayWithObject : 클래스 메소드를 사용해서 새 NSArray 를 만들 수 있다. 배열의 목록을 콤마로 구분해서 인수를 주고 목록의 끝에 배열의 끝임을 알리는 nil 을 넣는다. 이것이 배열의 중간에 nil 을 저장할 수 없는 이유 중의 하나이다.

NSArray *array;

array = [NSArray arrayWithObject: @"one", "two", "three", "four", nil];




배열을 만들고 나면 다음과 같이 배열이 담고 있는 객체의 개수를 얻을 수 있다.

- (unsigned) count;

ex) [array count];




다음과 같이 특정 인덱스의 객체를 가져올 수 있다.

- (id) objectAtIndex: (unsigned int) index;

ex) [array objectAtIndex: 1];




다음 코드는 위의 메소드를 이용해서 작성하였다.


int i;

NSArray *array;

array = [NSArray arrayWithObject: @"one", "two", "three", "four", nil];

for (i = 0; i < [array count]; i++) {

    NSLog(@"index %d has %@.", i, [array objectAtIndex: i] );

}



출처 : Objective-C 2.0 (이종웅 저)

Posted by 놀란

댓글을 달아 주세요