[Mac 개발 일기] Swift 문법 기초
Swift, SwiftUI, WidgetKit
먼저 iOS 개발에서 사용하는 세 가지 개념을 구분할 필요가 있다.
- Swift: Apple에서 개발한 프로그래밍 언어
- SwiftUI: Swift를 사용하여 화면을 구성하는 UI 프레임워크
- WidgetKit: 위젯을 구성하고 데이터를 갱신하는 프레임워크
즉, Xcode는 개발 도구이고 Swift는 프로그래밍 언어이다.
변수와 상수
Swift에서는 var와 let을 사용하여 변수와 상수를 선언한다.
var count: Int = 0 // 변수
let size: CGFloat = 28 // 상수
- var: 값을 변경할 수 있다.
- let: 초기화한 이후 값을 재대입할 수 없다.
Swift는 이름: 타입 순서로 작성하며, 타입을 생략하면 자동으로 추론하기도 한다.
let enabled = true // Bool 타입으로 추론
구조체와 프로토콜
Swift에서는 struct 키워드를 사용하여 구조체를 선언한다.
struct HeartEntry: TimelineEntry {
let date: Date
let filled: Bool
}
struct: 값 타입인 구조체를 선언한다.TimelineEntry: 위젯의 타임라인 항목이 따라야 하는 프로토콜이다.:: 프로토콜을 채택하거나 타입을 상속할 때 사용한다.
프로토콜은 C#의 인터페이스와 비슷한 개념이다.
Swift의 구조체는 조건에 따라 초기화 구문이 자동으로 제공되며, 객체를 생성할 때 new 키워드를 사용하지 않는다.
let entry = HeartEntry(date: .now, filled: false)
함수와 클로저
Swift에서는 func 키워드를 사용하여 함수를 선언한다.
func add(a: Int, b: Int) -> Int {
a + b
}
let result = add(a: 2, b: 3)
반환 타입은 -> 뒤에 작성하며, 함수 본문이 단일 표현식이라면 return을 생략할 수 있다.
또한 Swift에는 C#의 람다 표현식과 비슷한 클로저(Closure)가 존재한다.
let doubled = [1, 2, 3].map { number in
number * 2
}
클로저에서 in 앞은 매개변수, 뒤는 실행 내용을 의미한다.
위 코드의 map은 배열의 각 요소를 두 배로 변환하여 새로운 배열을 생성한다.
결과는 [2, 4, 6]이 된다.
마무리
새로운 문법이라 멀미날 뻔 했지만, gpt한테 C# 공부했으니까 그거랑 관련된 개념 있으면 연관지어서 설명해달라고 하니까 이해가 더 잘 됐다. 확실히 프로그래밍 언어는 하나만 완벽히 공부하면 다른 언어는 쉽게 공부할 수 있는 것 같다. 물론 C#을 완벽히 공부한 상태는 아니지만 그래도 웬만한 개념 정도는 알고 있어서 새로운 언어 익히는데 도움이 되는 것 같다.


![[Mac 개발 일기] 깃허브 Project 세팅하기(1)](https://data.develog.develrocket.com/upload/develog/muchan/1791978916021-60rqyw/___________2026-10-14______8.54.56.png)
![[Mac 개발 일기] XCode로 위젯 빌드해보기](https://data.develog.develrocket.com/upload/develog/muchan/1791416373870-5zsk7j/Xcode_______________iPhone____________.png)
const doubled = [1,2,3].map(number => number * 2) JS / TS 계열은 이렇게 쓰고있어요, 언어는 하나만 정확하게 알고있다면, 몇개를 써봤냐는 그렇게 중요하지 않는거같아요
그렇군요. 댓글 감사합니다! 확실히 언어 하나 정확히 알면 개념 이해는 쉽지만 그래도 문법 자체는 익숙해지려면 조금 걸리는것 같습니다 ㅠ