[IOS] - 기초 공부

2024. 3. 15. 13:44·개발일기/IOS

IOS란 애플사가 만든 모바일 운영체제로 아이폰, 아이패드에 사용되는 운영체제이다.

IOS 개발언어

  • 스위프트
    • 객체지향 언어로 애플에서 개발한 현대적인 범용 프로그래밍 언어를 의미
      • 장점
        • 코드를 간결하게 구현할 수 있다.
        • 객체 지향 개념을 사용하여 유연하게 개발이 가능하다
        • 멀티 플랫폼 개발이 지원되고 개발시간이 짧다.
        • 다양한 사용자 인터페이스 기능을 제공한다
      • 단점
        • 상대적으로 오브젝티브-C보다 속도가 느리다.
  • 오브젝티브 - C
    • 객체지향언어로 스위프트가 출시되기 전에 IOS개발에 주로 사용되는 프로그래밍 언어
      • 장점
        • 스위프트보다 더 빠르다
        • 상대적으로 더 안정적이다
        • 더 많은 엔진이 구현되어 있다
        • 엔터프라이즈 레벨 앱 개발이 가능하다
      • 단점
        • 간단한 작업을 수행하기 위해서는 많은 코드가 필요하다
        • 러닝커브가 높다
        • 디버깅을 하는데 어려움이 있다

IOS아키텍처 패턴

  • mvc패턴
    • 모델, 뷰, 컨트롤러를 사용하여 개발하는 패턴
    • 모델 : 데이터를 저장하고 업데이트 하는 역할을 수행
    • 뷰 : 데이터를 사용자에게 보여주고 사용자의 입력을 받은 역할, 뷰는 컨트롤러에게 사용자의 입력을 전달
    • 컨트롤러 : 모델로부터 데이터를 받아 뷰에 보여주거나, 뷰로부터 데이터를 받아 모델에 업데이트
  • mvp패턴
    • 모델, 뷰, 프레젠터를 사용하는 개발패턴
    • 모델 : 데이터를 저장하고 업데이트
    • 뷰 : 데이터를 사용자에게 보여주고 사용자의 입력을 받는 역할, 뷰는 프레젠터에게 사용자의 입력을 전달
    • 프레젠터 : 모델로부터 데이터를 받아 뷰에 보여주거나 뷰로부터 데이터를 받아 모델에 업데이트
  • mvvm패턴
    • 모델, 뷰, 뷰모델을 사용하여 개발하는 패턴
    • 모델 : 데이터를 저장하고 업데이트
    • 뷰 : 데이터를 사용자에게 보여주고 사용자의 입력을 받는 역할, 뷰는 뷰 모델에게 사용자의 입력을 전달
    • 뷰모델: 모델로부터 데이터를 받아 뷰에 보여주거나 뷰로부터 데이터를 받아 모델에 업데이트한다. 뷰모델은 뷰와 모델의 데이터를 변환하고 변환된 데이터를 뷰에 보여주기 위해 사용된다.
  • viper패턴
    • 뷰, 인터랙터, 프레젠터, 엔티티, 라우터 사용
    • 뷰 : 데이터를 사용자에게 보여주고 사용자의 입력을 받는 역할
    • 인터랙터 : 인터랜터는 모델로부터 데이터를 받아 뷰에 보여주거나 뷰로부터 데이터를 받아 모델에 업데이트
    • 프레젠터: 뷰와 인터랙터 사이의 데이터를 변환하고 변환된 데이터를 뷰에 보여주기 위해 사용
    • 라우터 : 뷰 간의 전환을 관리하는 역할, 엔티티는 데이터를 저장하고 업데이트

아키텍처 패턴 장점 단점

mvc 코드를 간결하게 작성하기 쉽고, 개발속도가 빠름 코드관리가 어렵고, 뷰를 수정하면 모델도 변경해야 한다.
mvp 구조가 명확하고 코드관리가 용이 개발속도가느리고, 코드를 작성하기 복잡
mvvm 뷰를 업데이트할 때 모델업데이트를 하지 않아도 된다. 비동기로 동작하기 때문에 코드를 작성하기가 복잡
viper 코드관리가 용이하고 뷰를 수정할 때 모델 변경이 필요하지 않다. 개발속도가 느리고 코드를 작성하기 복잡

IOS 주요 프레임워크

  1. CocoaPods스위프트 패키지 매니저는 다양한 종류의 프레임워크를 관리하고 업데이트할 수 있는 도구로 앱과 프레임워크 간의 연결을 쉽게 관리해준다. 해당 프레임워크는 IOS내에 이미 포함되어 있다.
  2. CocoaPods는 애플의 오브젝티브-C or Swift언어를 사용하여 개발한 IOS 및 macOS앱의 의존성 관리를 위한 프레임 워크이다. CocoaPods는 앱이 필요로 하는 라이브러리들을 관리하고 업데이트 할 수 있게 해준다. 또한 스위프트 패키지 매니저를 사용해 의존성을 관리할 수도 있다.
  3. Cocoa Touch는 Apple의 프레임워크 중 하나로, IOS앱 제작을 위한 기능을 제공한다. IOS기기의 메뉴 및 화면 구성, 사용자 인터페이스 제작 등의 기능을 제공해준다. 해당 프레임워크는 IOS내에 이미 포함되어있다.

Cocoa Touch Framework 설명

UIKit Apple이 제공하는 코코아터치 프레임워크 중 하나로, 앱 인터페이스를 개발할 때 필요한 다양한 기능들을 제공한다. UIKit은 앱의 뷰와 뷰 컨트롤러, 이벤트 등을 개발할 때 사용된다.
CoreData 애플이 제공하는 코코아터치 프레임워크 중 하나로, 데이터를 저장하고 관리하기 위한 엔티티들과 속성들을 모델링하고 관리할 수 있는 기능을 제공한다.
CoreGraphics 애플이 제공하는 코코아터치 프레임워크 중 하나로, 2D그래픽 작업을 수행하기 위한 기능들을 제공, 이미지처리와 그래픽작업, 도형 등과 같은 다양한 그래픽 작업을 수행할 수 있게 해준다.
CoreAnimation 애플이 제공하는 코코아터치 프레임워크 중 하나로, 2D 및 3D애니메이션을 만들기 위한 기능을 제공. 뷰를 이동하거나 사이즈를 변경하거나 회전하거나 역할을 수행하는 등의 애니메이션 기능을 제공
CoreText 애플이 제공하는 코코아터치 프레임워크 중 하나로, 텍스트 렌더링을 수행하기 위한 기능을 제공, CoreText는 텍스트 스타일, 글꼴, 폰트 등과 같은 텍스트 관련 기능을 제공.
  1. Foundation Framework

apple의 foundation 프레임워크는 기본적인 자료구조, 스트링처리, 메모리 관리 및 성능 등의 기능을 제공한다. 또한 네트워크 요청과 응답, 데이터 저장 등의 기능도 제공한다. 해당프레임워크는 IOS내에 이미 포함이 되어있다.

Foundation Framework 설명

NSURLSession Apple이 제공하는 Foundation 프레임워크 중 하나로, 네트워크 요청과 응답을 수행하기 위한 기능을 제공, 네트워크 요청이나 다운로드, 업로드 등의 네트워크 작업을 수행할 수 있게 해준다.
NSCache 애플이 제공하는 Foundation 프레임워크 중 하나로, 메모리 관리를 수행하기 위한 기능을 제공한다. 메모리 관리를 보다 쉽게 해주고, 메무리가 부족할 경우 더이상 사용하지 않는 것들을 자동으로 제거해주는 기능도 제공한다.
728x90
저작자표시 변경금지 (새창열림)

'개발일기 > IOS' 카테고리의 다른 글

[Swift] - WebView(웹뷰) 사용할 때 인터넷 허용  (0) 2024.03.15
[Swift] - Lottie 애니메이션 실습 삽질정리(feat. sandbox)  (0) 2024.03.15
[Swift] - Notification 정리  (0) 2024.03.15
[Swift] - UIGestureRecognizer  (0) 2024.03.15
[Swift] - View의 Cycle  (0) 2024.03.15
'개발일기/IOS' 카테고리의 다른 글
  • [Swift] - WebView(웹뷰) 사용할 때 인터넷 허용
  • [Swift] - Lottie 애니메이션 실습 삽질정리(feat. sandbox)
  • [Swift] - Notification 정리
  • [Swift] - UIGestureRecognizer
코딩하는빵친자
코딩하는빵친자
안녕하세요 코딩하는 빵친자입니다. 말그대롭니다.
  • 코딩하는빵친자
    코딩하는 빵친자의 블로그
    코딩하는빵친자
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 개발일기 (41)
        • Python (9)
        • Swift (2)
        • DataBase (0)
        • 알고리즘 (0)
        • IOS (30)
      • 데보션 영 (4)
      • 코테 (10)
        • Swift (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ios개발
    뷰관련메서드
    SWIFT
    podinstall오류
    pod
    arm7
    Rosetta
    uikit
    settransition
    podlock
    추적권한
    xcode
    제스처인식
    universalapp
    ios스와이프
    아웃링크
    buildsetting
    IOS
    delegate패턴
    uipangesture
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는빵친자
[IOS] - 기초 공부
상단으로

티스토리툴바