안녕하세요 :) 소들입니다!
오늘은 가장 기본 중에 기본을 다뤄보려고 해용
요즘 iOS 포스팅을 보러오시는 분들이 점점 생겨서 하하 :)))))))))))
UIKit
Foundation Framework
Cocoa Framework
Cocoa Touch Framework
익숙하쥬?
뭔가 들어보고 늘 import 해서 사용하고 하는 건 맞는데..
이들이 어떤 기능을 제공하는지는 잘 모르는 사람도 있을 거 같아서 정리해봅니다!!!!
모든 포스팅은 편의 말투로 합니다~!!
1. Cocoa Framework & Cocoa Touch Framework
Cocoa Framework와 Cocoa Touch Framework의 차이점이 몰까 👀
먼저 더 익숙한 Cocoa Touch Framework부터 다루겠움
1-1. Cocoa Touch Framework
귀엽게 꾸며봤음 💩
정리하자면,
Cocoa Touch Framework란
UIKit / Foundation / CoreData / MapKit / CoreAnimation 등등을
포함하고 있는 Framework
즉,
iOS, iPadOS 등 애플 기기에서 구동되는 Application을 개발하기 위해 사용하는
통합 프레임워크
를 칭하는 것임!!!
근데 Cocoa Touch Framework가 포함하고 있는 Framework들 중에
가장 중요하고 많이 사용하는 것이 UIKit / Foundation 임
참고로 Cocoa Touch Framework 특징은
Objective-C Runtime을 기반으로 한다 |
Objective-C의 최상위 클래스인 NSObject를 상속한다 |
Objective-C Runtime을 기반으로 하지만
Swift와 Cocoa Touch Framework는 완벽호환되기 때문에,
Objective-C를 모르고 Swift만 알아도 충분히 쓸 수 있는 것임!
또한 Cocoa Touch Framework 안에 있는 클래스는 모두 NSObject를 상속받고 있음 :)
그럼 Cocoa Framework는 무엇일까!?
1-2. Cocoa Framework
바로 위랑 뭐가 달라진지 아려나 :)
Cocoa Framework는 바로 MacOS를 개발할 때 사용하는 것임!!
따라서 Cocoa Touch Framework와 다르게
UIKit이 아닌 AppKit을 포함하고 있음!!
MacOS에서 구동되는 Application을 개발하기 위해 사용하는
통합 프레임워크
뭐 둘의 차이점은 이게 끝임 :)
우린 iOS 개발이니까 Cocoa Touch Framework를 기준으로 설명하겠음!
2. Foundation Framework
먼저, Cocoa & Cocoa Touch Framework 모두 속해 있던 Foundation Framework 부터 볼 것임!!!
Foundation Framework를 어디서 볼 수 있냐면
이렇게 Swift File을 생성하면
쨔쟌 -
자동으로 Foundation Framework가 import 되어 있음
그럼 Foundation Framework는 뭘까?
2-1. Foundation Framework의 담당
Foundation Framework는
가장 기본적인 데이터 타입(String, Int) 부터
자료구조, 각종 구조체나 타이머, 네트워크 통신, 파일 관리 등
기본적이나 프로그램의 중심을 담당
우리가 아무렇지 않게 사용하는 UI와 별개인 기능들이 바로 이 Foundation Famework 안에 들엉있음!
따라서 이 Foundation Framework를 삭제하면
😱Foundation Framework 삭제해도 잘 되는데..?
그 이유는 Foundation Framework에 속한 놈들은
"NS" 로 시작하는 접두어가 붙은 친구들임
NSString
NSArray
등등
이런 Objective-C 자료형들이 모두 Foundation Framework임
근데 Swift의 기본 자료형 중 몇 개는 (String, Array 등) Objective-C와 별개의 자료형이잖음!?
(Objective-C에선 클래스, Swift에선 구조체)
이렇게 때문에 Foundation Framework가 없더라도 쓸 수 있는 것 같음!!!
실제 String의 구현부를 보면
Foundation 항목이 아닌 Swift 항목에 들어가 있음
근데 Objective-C와 동일한 Foundation 항목에 들어가 있는
Timer(NSTimer)의 경우엔
Foundation Framework를 삭제하면 쓸 수 없음 :)
(NS를 걷어낸 것일 뿐)
3. UIKit
자 이번엔 UIKit에 대해 보자 :)
UIKit은 우리에게 매우매우 친숙한 존재임. 왜냐면
프로젝트를 할 때 UIViewController, UIView 등등을 만들기 위해
Cocoa Touch Class로 원하는 파일을 만들면
UIKit이 자동으로 import 되어있기 때문임
그럼 UIKit은 뭘 하는 Framework일까?
2-1. UIKit의 담당
UIkit은
화면이나 유저 인터페이스, 앱의 동작 등 기능 구현을 주로 담당하는 프레임워크
말그대로 U(ser) I(nterface) 담당!
따라서
화면에 표현되는 각종 콘텐츠를 보유하고
화면의 구조를 만들고 관리하고,
또 사용자와 상호 반응(터치 시 이벤트 발생) 등
화면과 관련된 일을 하는 프레임워크임
이 UIkit의 대표적인 객체들은
스크린에 View를 출력하는 Window
화면을 그리는 View
Window와 View를 연결해주는 ViewController
등등이 있고,
이는 모두 UIKit에 해당하는 객체임!!!
2-2. UIKit 계층도
UIKit의 대표적인 클래스들의 계층도는 다음고 ㅏ같음
Cocoa Framework에 속했으니 최상위 클래스로 NSObject를 상속받고 있고,
그뒤로 UIKit의 접두어인 UI를 붙인 클래스 이름들이 대체적임
따라서 Cocoa Touch Class로 파일을 만들면
UIKit을 사용하여 UI 관련 작업을 하겠다 란 뜻임
근데 Cocoa Touch는 대표적으로 UIKit + Foundation Framework인데,
왜 UIKit만 import하는데 파일 명은 Cocoa Touch Class임?
이 답을 찾으러 가보자
4. UIKit은 Foundation Framework를 import 하고 있다
머 제목에서 스포했지만
우린 지금껏Cocoa Touch Class인 ViewController를 만들며
아무렇지 않게 개발을 해왔단 말임??
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let timer: Timer = .init()
}
}
|
이런 식으루 말임!!!
근데 나는 Foundation Framework를 import하지 않았는데
어떻게 Timer란 객체를 사용할 수 있는 것일까?
이에 대한 답은 UIkit에 들어가면 있음
그러하다
UIKit은 Foundation Framework를 내부적으로 import하고 있기에
위같은 그림이 가능했던 것임
5. 정리
[ UIKit ]
UI(화면)과 관련된 기능(Window, View 등)을 담당 + Foundation
[ Foundation ]
UI를 제외한 앱의 중심 기능(자료형, 네트워킹, 타이머 등)을 담당
[ Cocoa Framework ]
AppKit + Foundation + etc
[ Cocoa Touch Framework ]
UIKit + Foundation + etc
.
.
.
누군가에게 도움이 되었길 바라며..
잘못된 내용이나 피드백 언제나 환영입니다 :)
'iOS > iOS' 카테고리의 다른 글
iOS) Color Literal - 코드에서 색상표 보기 (4) | 2020.11.12 |
---|---|
iOS) CALayer 제대로 이해하기 (6) | 2020.11.11 |
iOS) ClipsToBounds vs MasksToBounds (0) | 2020.11.02 |
iOS) Frame vs Bounds 제대로 이해하기 (3/3) (11) | 2020.11.02 |
iOS) Frame vs Bounds 제대로 이해하기 (2/3) (30) | 2020.10.30 |