UIKit Framework를 공부하며 궁금증 정리 (part 2)

7과11사이·2023년 8월 1일
1

스파르타코딩클럽

목록 보기
19/90
post-thumbnail

궁금중

1. Delegate는 어떤 역할을 하는가

delegate의 사전적 의미는 A person sent or authorized to represent others.
다른 사람을 대표하는 사람인만큼 일종의 대리 권한자를 뜻한다.
하지만 코드에 delegate 역할이 왜 필요할까?
모 사이트에서는 아래와 같이 설명한다.

"As the name implies, delegation gives control to other objects... delegation patterns enable objects to communicate back to their owners decoupled from their code. It's much easier to reuse and maintain code if an object does not have to know the concrete type of its owner. [링크]

delegate는 특정 코드의 객체로 분리된(이게 어떤 의미일까?) 코드에게 데이터를 전달하는 역할을 한다. 예시로 push notification이나 URL 또는 앱 실행 단계를 언급했지만, 완벽하게 이해가 되지는 않는다.

2. UIImage와 UIImageView의 차이점은 무엇이지?

  • 이건 단순히 Image는 사용하고자 하는 이미지를 변수로 담는 것이고
    해당 변수를 ImageView를 활용해서 출력시키는 느낌이다. 하지만 혹시 놓치고 있는 부분이 있을수도 있으니까 확인해보자.

    정확했다!
    UIImage는 이미지를 담는 데이터 객체
    UIImageView는 UIImage 데이터를 표시하는 컨트롤 역할

3. Origin과 Size은 어떤 차이점을 가질까?

우리가 위치를 특별히 지정하지 않고 넓이, 높이만 지정했을 경우,
생성된 UIComponent는 아이폰 좌측 최상단 구석에 놓여 있을 가능성이 크다.
이유는 (0,0)의 기준이 좌측 최상단이기 때문인데,
이를 바꾸기 위해선 x,y 값이 필요하다.

x와 y 좌표로 스크린에서 위치를 잡고, height와 width의 규격을 만들어야 원하는 UIComponent가 알맞는 위치를 기점으로 크기를 보여줄 수 있을 것이다.이 모든 과정에서 사용되는 키워드가 CGPoint, CGSize, CGRect이다.

1. CGPoint는 공식문서에 따르면 two-dimensional coordinate system이라고 한다. 즉, x와 y를 통해 좌표에 점의 위치를 잡는 코드이다.

2. CGSize는 width and height value를 가진 구조체를 의미한다. 즉, 말 그대로 높이, 넓이가 필요하면 사용되는 규격을 의미하는데, CGRect와 가장 큰 차이점은 '사각형이냐 아니냐의 차이다.' [링크]
CGSize는 말그대로 높이와 넓이를 의미할 뿐, 사각형을 의미하지 않는다.

3. CGRect은 조금 특별하게 사각형의 위치와 크기 둘 다 포함한 구조체다.
공식문서에서도 the location and dimensions of a rectangle이라 표현하는데, 생성자들을 보면, 단순히 x, y, width, height 뿐만 아니라 (origin , size)를 포함하고 있다.
이 말은 CGRect는 위에 정리된 CGPoint와 CGSize를 모두 포함하기에
origin은 CGPoint의 x와 y 좌표. Size는 width와 height를 대체하는 표현이라 이해할 수 있다!!

🚨 한 줄 정리: 🚨
parameter의 타입만 다를 뿐, 다 직사각형을 생성하는 생성자이다~

[링크2], [링크3]


추가 정리를 하면, Swift가 개발-friendly한 언어로 포지셔닝하고자 한만큼,
이전부터 존재한 복잡한 규격들을 처음 접하는 분들도 이해할 수 있도록 CGRect, CGPoint, CGSize를 사용한다는 의견도 있다.

4. CGRect()는 어떤 역할을 하는가?

- 규격을 위해 사용하는 코드인 것은 알겠다. 하지만 왜 다른 요소(size 같은)가 아닌 CGRect를 하는지, CGPoint와의 차이점도 궁금하다.

Stated Above

5. addSubView와 InsertSubView의 차이점

  • addSubView는 말그대로 메인 View에 얹히고 싶을 때 사용하는 것으로 보여진다. 반면, Insert는 배열에 값을 대입하는 것처럼 특정 구간에 특정 요소를 삽입하고 싶을 때 사용하는 것으로 보여진다. 하지만 여기서 궁금한 건, index가 어떤 것을 가르키는지 궁금해진다.

6. dataSource = self 와 delegate = self?

  • 자기 자신을 활용하겠다는 점은 이해가 되지만 자신을 참조하는 행동인건가?

7. bounds, frame, size 차이점 이해 필요

0개의 댓글