티스토리 뷰
Objective C 코드를 보다보니 말도안되는 Syntax가 많이 보인다.
그중 제일 이해안되는 [] 대괄호에 대해 고수분들께 문의했고
오늘 배운것을 정리해본다.
일단 예제소스를 써보자
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(23,28,258,20) ];
이게 문제의 출발이다
이 말도안되는 소스는 대체 무엇인가
일단 여기서 왼쪽절은 titleLabel이라는 UILabel 포인터 변수를 선언한거다. 여기까지는 소양
우측 UILabel alloc 은 내가 알고있는 객체지향 개념으로는 new라고 보면 된다고 하셨다.
메모리를 할당해야 그 포인터 주소가 나오니까 그걸 alloc (메모리할당) 한거다.
그럼 그렇게 나온 놈한테 initWithFrame을 한거로 봐야한다.
나눠보면
UILabel *titleLabel = [UILabel alloc];
[titleLabel initWithFrame:CGRectMake(23,28,258,20)];
이렇게 나뉘어진다.
그래 위에문장은 그렇다고 치자 뭐 완벽하게 이해되는건 아니지만
그럼 아래문장에 대괄호는 왜친건데?
라고 질문이 출발하니
그에대한 답은 '메시지'의 개념을 이해해야 한다고 하셨다. 그리고 [] 대괄호로 묶는건 인자? 라고 봐야된다고도 하셨다.
titleLabel이라는 놈한테 initWithFrame[] 을 한거다
내가 아는 문법으로 바꾸면
titleLabel.initWithFrame()
이렇게 바꿀수 있다는거다.
CGRectMake()를 해서 나온 사각형을 initWithFrame에 보내고 그걸 할당한 UILabel 포인터변수에 넣은거다.
음.. 정리를 해도 말로 표현이 잘 안되는데 이 그지같은 형태의 근원은
우리가 갖고있는 일반적인 개념으로는 각 객체의 함수를 실행시킨다. 라는 생각을 갖고있는데
C에서는 우린 그 일을 수행할 놈한테 메시지를 보내고, 그 처리는 그쪽에서 알아서 하게 한다... 메시지를 보낸다는 부분이 포인트다.
이게 큰 차이점이라고 한다.
자 결론
[] 대괄호는 파라미터를 보내는거 정도로 기억해라 like ()
그럼 적용을해보자
[self addSubView:mMyVariable];
이놈을 해석하면
self.addSubView(mMyVariable);
이렇게 되는거다
번외편
- (id)initWithFrame:(CGRect)frame withInfo:(Weather *)info
{
//BlahBlah
return self
}
뭐 이런 함수
젤 위에보면 -가 붙는데
-는 보통 함수같은데 쓰고 가끔보이는 +는 static 함수 같은데 쓰인다고 한다.
대충 난 -만 쓰면 될거같다.
(id)를 리턴하는 initWithFrame함수인데 인자로 CGRect타입의 frame과 withInfo라는이름의 Weather 포인터 info를 받는다.
뭐 이정도로 봐야될거같다.
[]를 할때 변수가 하나만있으면 땡땡이: 콜론 을 생략하는 이상한 요상한 법칙이 있다고 한다.
일단 오늘은 여기까지 정리하고 넘어간다.
'IT > Android iOS' 카테고리의 다른 글
About cocoapods (0) | 2017.09.24 |
---|---|
Android / iOS PSD의 px에서 layout에 넣을 적당한 숫자 구하기 (0) | 2017.09.12 |
Objective C / Swift에 등장하는 NS의정체 (2) | 2017.09.05 |
알면알수록 신경쓰이는 애플 인증서 체계 (0) | 2017.08.28 |
Android Instant App / PWA (0) | 2017.05.16 |
- Total
- Today
- Yesterday
- 오블완
- 0x0422
- 컴공
- 존슨 황
- nsstring
- 박찬욱
- 티스토리챌린지
- 언프리티 랩스타
- 존슨황
- 칠레와인
- 이창동
- 개발자
- cfstring
- 일리네어
- Octane S2
- 하 준 숴이
- 컴퓨터공학과
- 연구개발직
- JS
- 나가노 스키여행
- 하포원
- Java Developer Day
- 깝스 1회
- 개발자취업
- 취업
- happo-one
- swift
- 송강호
- 취준생
- 감정수업
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |