본문 바로가기

iOS/iOS

iOS) UIKit / Foundation / Cocoa / Cocoa Touch

 

 

 

안녕하세요 :) 소들입니다!

오늘은 가장 기본 중에 기본을 다뤄보려고 해용 

요즘 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

 

 

 

 

 

.

.

.

누군가에게 도움이 되었길 바라며..

잘못된 내용이나 피드백 언제나 환영입니다 :)

 

 



Calendar
«   2024/05   »
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 31
최근 댓글
Visits
Today
Yesterday