이번에는 간단하게 앱을 만들기에 앞서 IOS의 기본적인 내용에 대해서 짚고 넘어가려고 한다.
보통의 개발자들이라면 UI관련된 내용이랑 MVC 모델의 대략적인 구성도 같은 내용을 먼저 알아야 하기 때문에 우선적으로 간단히 설명을 하고 진행을 해보려고 한다.
Cocoa Touch Framework 란 IOS 개발환경을 구축하기 위한 최상위 Framework로 이해하면 쉽다.
일반적으로 IOS 개발을 위해 Object-C / Swift에서 상속해서 사용하는 UIkit, Foundation을 포함한 대부분의 클래스 객체들이 모두 Cocoa Touch Framework에 속한다고 보면 된다.
Cocoa Touch Framework 중에서 가장많이 사용되는게 UIkit과 Foundtation이다.
Foundation Framework는 가장 기본적인 데이터 타입부터 자료구조, 각종 구조체, 타이머, 네트워크 통신, 파일관리 등 기본적인 프로그램의 중심을 담당한다.
UIKit Framework는 UI에서 알수 있듯이 사용자의 인터페이스를 관리하고 이벤트를 처리하는 것이 주목적인 프레임워크이다.
UIkit에서 주로 처리를하는 사용자 이벤트로는 제스쳐 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등이 있다.
또한 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 알럿창 등 어플리케이션의 화면을 구성하는 요소도 포함되어 있다.
그렇기 때문에 자주 사용하는 UIViewController나 UIView 등 UI가 붙는 클래스들을 사용하려면 반드시 UIKit을 임포트 시켜줘야한다.
UIKit의 대표적인 클래스들의 계층도이다. 자주 사용되는 UI 요소들을 하나씩 다뤄볼 예정이다.
UIKit이 사용자 인터페이스를 관리하고 이벤트를 처리하는 주 목적인 Framework 라는 것만 알아도 충분할 것 같다.
UIKit의 앱의 구조는 기본적으로 MVC 디자인 패턴을 사용한다.
JSP를 많이 해본 사람들이라면 당연히 쉽게 MVC가 뭔지에 대한 내용을 알것이다. 하지만 처음 코딩으로 IOS 부분을 다루는 사람들이 있을 수도 있기 때문에 좀 자세히 설명해보려고 한다.
MVC
- Model : 앱의 데이터와 비지니스 로직을 가지고 있음.
- View : 사용자에게 보여주는 화면
- Controller : 모델과 뷰의 중간다리 역할, 뷰로부터 사용자의 액션을 전달받아 model 에게 어떤 작업을 해야하는지 전달하며, 또는 모델에서 작업한 내용을 View에 어떻게 보여줄 것인가 하는 내용.
이렇게 MVC 내용을 확인했을 때에 가장 중요한 부분이 Controller의 역할이라고 볼 수 있다. 중간에 전달자인 Controller가 제대로 작동을 하지 않으면 아무것도 할 수가 없다.
쉽게 정리하자면 Model이 무엇을 View는 보여줌 Controller는 어떻게. 라고 생각하면 이해도가 빠를 듯 싶다.
또한 뷰와 모델의 상호 의존성을 없애고, 컨트롤러가 뷰와 모델의 중간다리 역할을 해주는 것이 MVC 패턴의 가장 이상적인 내용이다.
하지만 위에서 언급했다 싶이 Controller가 가장 중요한 내용으로 인하여 실질적으로 프로젝트를 진행하다보면은 대부분의 프로젝트에서 Contorller의 내용이 상당히 비대해지는 것을 알 수 있다.
이부분은 비단 Swift UI에만 있는 내용이 아니다. 참고로 필자는.... .NET 개발자이기 때문에 .NET을 좋아하는 부분이 이부분인 경우에도 있다. JSP도 평소 다른 큰 프로젝트를 하다보면 항상 Controller가 상당히 비대해지는 내용을 볼 수가 있기 때문에...
이렇게 얘기하면 뭐 반박을 할 수도 있지만 그냥... 개인적인 견해이다... .NET 개발만 7년 이상정도 해온 사람이기 때문에... 이정도는 얘기해도 될 듯 싶어서...
다시 원래의 내용으로 돌아가면.. 이런 문제를 해결하기 위해서 MVVM이나 바이퍼 패턴등 다양한 디자인적인 요소로 인하여 MVC의 단점을 해결할 수 있다.
하지만 필자가 개발자 생활을 회사에서 좀 오래 하다보니.. 인력이 충분해야 이런 방식을 쓰지.. 중소규모의 회사의 프로젝트를 할때도 이렇게까지는 안해주더라...
우선 가장 기본적인 내용을 진행할것이기 때문에 MVC 패턴에 대한 프로젝트 진행을 해볼 예정이다.
'APPLE > Swift' 카테고리의 다른 글
[ Swift ] UINavigationController (0) | 2022.10.12 |
---|---|
[ Swift ] 간단한 랜덤 속담 App (0) | 2022.10.05 |
[ Swift ] IBOulet & IBAction (0) | 2022.10.03 |
[ Swift ] AutoLayout (0) | 2022.10.02 |
[ Swift ] ViewController (0) | 2022.10.02 |