05.16(금) iOS 사전캠프

2025. 5. 16. 20:41·🖋️ TIL Journal
-->
TIL은 편한 말투로 작성됩니다~

 

아래는 오늘 공부하며 정리한 내용과 문제 풀이 주소입니다.

- 클로저/객체지향 프로그래밍 공부 정리
- 클로저/객제지향 프로그래밍 퀘스트 제출

 

✅ 클로저(Closure)


클로저란?

  • 변수처럼 저장하거나 다른 곳에 전달할 수 있는 작은 함수
  • 변수나 상수에 저장할 수 있고, 함수의 파라미터로도 전달 가능하다.
  • 간단히말해, "이름 없는 함수" 혹은 "변수에 저장할 수 있는 코드 덩어리" 라고 생각하면 된다

 

클로저의 기본 문법
{ (매개변수) -> 반환 타입 in 
    실행 코드 
}

 

간단한 예제
let greeting = { (name: String) -> String in 
    return "Hello, \(name)!"
}

 

클로저 축약 문법
// 1. 전체 문법 
let add = { (a: Int, b: Int) -> Int in return a + b }

// 2. 타입 추론
let add = { a, b in return a + b }

// 3. return 생략
let add = { a, b in a + b }

// 4. 축약 인자 이름 ($0, $1, ...)
let add = { $0 + $1 }

 

 


캡처(Capture)

  • 클로저가 생성될 때 주변 변수나 상수의 값을 기억하고 저장해 뒀다가, 나중에도 사용할 수 있게 해 준다.
  • 클로저는 함수와 달리 외부 변수의 값을 복사하는 게 아니라, 해당 변수 자체를 참조해서 계속 사용할 수 있다.
    즉, 클로저가 실행될 때 그 변수의 최신 값에 접근할 수 있다.
var number = 10
let closure = { number += 5 } // 외부 변수 number 캡처
closure() // 앞에서 정의한 클로저 실행
print(number) // 15
  • 위 코드에서 number가 var가 아닌 let이었다면, 아래처럼 값을 number += 5로 값이 변경될 수 없어서 오류가 발생한다.
let number = 10
let closure = { number += 5 } // 오류. 변경 불가능한 값

 

 

후행 클로저

  • 함수의 마지막 인자가 클로저일 때, 그 클로저를 괄호 바깥에 쓸 수 있는 문법
  • 코드를 더 간결하고 읽기 쉽게 만들기 위해서 사용함
// 일반 클로저 전달 방식
함수명(파라미터: { 클로저 })

// 후행 클로저 방식
함수명 { 클로저 }

위의 예시처럼, 마지막 인자가 클로저일 때 코드를 더 간결하게 만들기 위해 후행 클로저를 사용한다.

 

UIKit 후행 클로저 예시
// UIKit예시
UIView.animate(withDuration: 0.3, animations: {
  print("애니메이션 시작")
})

// 후행 클로저 방식
UIView.animate(withDuration: 0.3) {
print("애니메이션 시작")
}

 

SwiftUI 후행 클로저 예시
// SwiftUI 예시
Button(action: {
    print("버튼 눌림")
}) {
    Text("Click!")    
}

// 후행 클로저 방식
Button {
    print("버튼 눌림")
} label: {
    Text("Click!")
}

 

 

 

⚙️ 객체지향 프로그래밍 (OOP, Object-Oriented Programming)


객체지향 프로그래밍이란?

  • 객체(Object)를 중심으로 프로그램을 설계하는 방식이다.
  • 현실 세계처럼 객체를 만들고, 그 객체들이 서로 상호작용하며 동작하는 방식의 프로그래밍 패러다임이다.
  • 클래스와 객체
    • 클래스(Class): 객체를 만들기 위한 설계도 또는 틀 (ex. 붕어빵 틀)
    • 객체(Object): 클래스에서 생성된 실제 인스턴스 (ex. 붕어빵)

 

객체지향 프로그래밍의 주요 원칙 4가지

  • 캡슐화(Encapsulation): 데이터와 기능을 하나로 묶고, 외부에선 필요한 부분만 접근 가능하도록 함
  • 상속(Inheritance): 기존 클래스를 확장해 새로운 클래스를 만들 수 있음
  • 다형성(Polymorphism): 동일한 메서드가 상황에 따라 다른 방식으로 동작함
  • 추상화(Abstraction): 내부 구현은 감추고 필요한 기능만 외부에 보여줌

 

 

'🖋️ TIL Journal' 카테고리의 다른 글

05.20 (화) GitHub 개발 협업 방식  (0) 2025.05.20
05.19 (월) 튜터님의 피드백  (0) 2025.05.19
05.14 (수) iOS 사전 캠프  (0) 2025.05.14
05.13(화) iOS 사전 캠프  (0) 2025.05.13
05.12 (월) iOS 사전캠프  (0) 2025.05.12
'🖋️ TIL Journal' 카테고리의 다른 글
  • 05.20 (화) GitHub 개발 협업 방식
  • 05.19 (월) 튜터님의 피드백
  • 05.14 (수) iOS 사전 캠프
  • 05.13(화) iOS 사전 캠프
MoriOS
MoriOS
기억하기 위해 기록하는 공간 🖋️
  • MoriOS
    MoriOS
    MoriOS
  • 전체
    오늘
    어제
    • 분류 전체보기 (38) N
      • 📌 Swift (10)
      • 📱 iOS (4)
      • 💡 Algorithm (1)
      • ❕Data structure (4)
      • 🪙 Python (0)
      • ⚙️ Git (2)
      • 🖋️ TIL Journal (14) N
      • 📝 Etc (3)
  • 블로그 메뉴

    • GitHub
  • 인기 글

  • 태그

    todo앱
    낼배캠
    swift 아스키
    swift ismultiple
    swift min
    후행클로저
    ios 데이터 저장
    낼배캠 사전 캠프
    Optional
    swift max
    Components
    ios
    swift
    터미널 워킹 디렉토리
    강한 참조
    swift 수학
    터미널 기본 경로
    weak vs unowned
    TiL
    swift 최대 최소
    swift 알고리즘 팁
    todo 앱
    swift optional
    iterm 실행 폴더
    swift 대소문자
    iterm2 기본 경로
    weak
    ios segue
    Split
    joined()
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
MoriOS
05.16(금) iOS 사전캠프
상단으로

티스토리툴바