@main 은 타입 기반의 프로그램 진입점.
@main은 Swift 5.3 버전 부터 사용했고,
그전에는 @UIApplicationMain 이라는 키워드로 사용하고 있었다.
Swift의 초기 버전에서는 @UIApplicationMain이나 @NSApplicationMain 어노테이션을 사용하여 앱의 진입점을 지정하고 "부팅 로딩" 코드를 작성하였습니다. 이 방식은 작동은 잘 했지만, 앱의 실행 흐름을 이해하고 관리하는 데 있어서 복잡성을 가지고 있었습니다.
Swift에서는 기본적으로 앱의 진입점(entry point)이나 main 함수를 명시적으로 작성하지 않고 대신 UIKit 프레임워크가 이 역할을 대신함.
Swift에서 @main 어노테이션이 도입되면서, 개발자는 앱의 시작점을 더욱 명확하게 지정할 수 있게 됨.
@main 어노테이션이 붙은 클래스는 앱의 시작점이 되며, 이 클래스는 UIApplicationDelegate 프로토콜을 준수해야 함.
// AppDelegate.swift
// @main 어노테이션을 사용하여 AppDelegate 클래스를 앱의 진입점으로 지정할 수 있습니다.
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
// ...
}
이렇게 하면, Swift 컴파일러는 @main 어노테이션이 붙은 클래스를 찾아내어 앱의 시작점으로 사용함.
이 클래스는 앱의 생명주기에 대한 이벤트를 처리하는 역할을 하고 이 방식으로, Swift에서는 더이상 main 함수를 직접 작성하거나 관리할 필요가 없게 되어 앱의 실행 흐름을 관리하는 코드를 간결하고 직관적으로 만들어줍니다.
@UIApplicationMain이란?
: UIApplicationMain 함수를 호출하고 해당 클래스의 이름을 delegate Class의 이름으로 전달함.
@UIApplicationMain의 기능?
함수형 프로그래밍은 하나의 프로그래밍 패러다임으로 정의되는 코딩 접근 방식으로, 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임을 의미.
함수형 프로그래밍 언어로 설계: 클로저, 스칼라, 하스켈 등의 언어, 자바스크립트, 코틀린, 파이썬 등에도 최근 버전에 함수형 프로그래밍 문법이 추가.
순수 함수를 사용하여 프로그램의 상태를 변경하지 않고 계산을 수행하는 것에 중점을 둠.
함수형 프로그래밍은 높은 수준의 추상화를 제공하며, 이를 통해 코드의 간결성, 가독성, 재사용성을 향상시킬 수 있음.
함수형 프로그래밍은 기존 절차적 프로그래밍과 객체 지향형 프로그래밍과는 다른 새로운 방식으로 함수형 프로그래밍을 배우는 것은 스칼라나 클로저같은 언어들에 관심이 없고 앞으로 쓰지 않을 것 같다고 해도, 다른 방식으로 사고하는 법을 배우는 것을 의미. 새로운 계산방법을 배우는 것처럼 사고의 전환을 필요로 하며 다양한 사고방식으로 프로그래밍을 바라보면 유연한 문제 해결이 가능하게 됨.
장점
단점