ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] - Swift에 대하여(Feat. UIkit,SwiftUI)
    iOS/iOS 2024. 1. 9. 19:23
    728x90
    반응형

     

    난 iOS로써 swift를 지금까지 1년을 넘게 사용해왔다.

    하지만 이번에 친구들과 스터디를 시작하게 되면서 그냥 언어를 쓴다라는 개념 그 이상을 배울 수 있는 기회가 생겼다.

     

    Swift

     

    탄생
    • 기존 애플에서는 앱 개발 프로그래밍 언어를 Objected-c라는 언어를 사용했었음
    • 2014 WWDC에서 (신속한,재빠른)Swift라는 새로운 개발언어를 사용하게 됨

    일단 이정도이다. 여담으로는 잡스 2011년 사망해서 swift를 알지 의문이다.

     

    특징

     

    • Objective-C와 swift 둘다 LLVM 사용
    • 옵젝시 환경에서 컴파일 됨

    여기서 말하는 LLVM은 Low-Level-Virtual-Machine의 줄임말로 프로그램을 컴파일 타임, 링크 타임, 런타임 상황에서 프로그램의 작성 언어에 상관없이 최적화를 쉽게 구현할 수 있도록 구성되어 있다.

     

    참고로 안드로이드의 java,kotlin 모두 JVM(Java-Virtual-Machine)을 사용한다.

     

    또한 Swift에서 강조하는 3가지의 대목이 있는데 다음과 같다.

     

     

    Safe(안정성)

    • 정적언어의 특징이긴하지만 컴파일할때 오류를 잡아내기 때문에 런타임 오류가 줄어들면서 앱의 버그나 크래시가 줄어듬
    • 여러 생각에 의해 메모리관리를 용이하게 할수 있음
      • Optional : null이 들어갈 수 있는 데이터 타입
      • ARC : 메모리 관리,자바의 GC와 같이

    Fast(신속성)

    • 현대적인 문법(MZ언어)
    • 컴파일 시 미리 타입 안정성 체크를 하기 때문에 Objective-c보다 코드 실행속도가 빠름
    • 멀티 패러다임 제공 선언형, 명령어 프로그래밍과 프로토콜지향,객체지향프로그래밍 동시 지원

    Expressive(표현성)

    • 많은 내부 라이브러리와 프레임 워크
    • 코드의 구조와 문법이 유연해지고 가독성이 올라감
      • delegate : 뷰간의 객체 데이터 이동을 위한 프로토콜
      • Extension : 구조체나 클래스의 확장자
      • Closure : 익명함수 - 특정 기능을 변수나 상수에 저장할 수 있는 메서드
      • async/await : 비동기 작업 효율적으로 하기 위한 문법 (클로져의 콜백지옥을 위해 생긴 따끈따끈한 최신 기술)
      • Combine : 시간에 따른 데이터 스트림을 관리하기 위한 내부 프레임워크
      • SwiftUI,UIKit 제공

    여기서 설명을 하지 않은 부분은 세분화해서 따로 포스팅할 생각이다. 일단 각자 강조성에 의거하는 내용들이 이런것들이 있다 라는것만 참고하자.

     

    다음은 UI를 구성하는 프레임워크에 대한 내용이다. 

    iOS를 개발하기 위해 반드시 알아야할 대목들 임으로 따로 빼서 설명을 하겠다.

     

    SwiftUI/UIKit

    iOS애플리케이션의 UI를 구현하고 이벤트를 관리하는 프레임워크

    UIKit
    • 명령형 - 코드에서 명시적으로 동작을 정의해야함
    • StroyBoard(.storyboard)와 코드(.swift)파일로 구성됨
    • KVO,Deletegate패턴 사용(메서드를 따로 작성해서 사용)
    • 최소지원 버전이 없음(모든 버전에 호환 가능)
    • 모바일의 모든 기능 구현 가능
    SwiftUI

     

    UIkit를 조금 보안하여 WWDC19에서 처음 나온 새로운 프레임워크(담굴라고 나온 프레임 워크)

    • 선언형 - 특정 기능을 수행하는 동작을 암시적으로 사용함(함수형 프로그래밍 - 고차함수 사용)
    • swift파일로 모두 사용가능(View 프로토콜을 준수)
    • 데이터 바인딩 사용(어노테이션으로 상태변수를 선언)
    • 최소지원 iOS13
    • 특정 기능을 제외한 기능 구현가능(대표적인 예 Map Controll,,,)

     

    결론

     

    현실적으로 현재 기업들은 아직 UIkit을 쓰는 기업이 매우 많아 보이지만 SwiftUI사용으로 넘어가는 추세이다. 2023년 기준으로 둘다 필수적인 프레임워크라고 생각한다. 하지만 필자는 SwiftUI만 전문적으로 다룰줄 알기에 UIkit 공부와 프로젝트를 따로 진행할 예정이다. iOS개발자라면서 UIkit을 제대로 다루지 못하는 것은 에러라고 생각하기 때문에 더 늦기전에 필요한 기술스택을 쌓아야할 것 같다.

    •  

     

    스터디 내용

    https://github.com/team-imad-study/TIL-quarang/wiki/Swift%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

     

    Swift에 대하여

    Contribute to team-imad-study/TIL-quarang development by creating an account on GitHub.

    github.com

     

     

    'iOS > iOS' 카테고리의 다른 글

    [iOS] - GCD에 대해서(2/4)  (1) 2024.03.16
    [iOS] - GCD를 알아야하는 이유(1/4)  (0) 2024.03.16
    [iOS] - URLSession VS Alamofire  (1) 2023.12.07
    [iOS] - Swift Package Manager 생성 및 배포  (0) 2023.11.28
    [iOS] - AdHoc 배포 (github버전)  (1) 2023.11.03
Designed by Tistory.