이 영역을 누르면 첫 페이지로 이동
Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

페이지 맨 위로 올라가기

Daily Growth

Loving you is the reason I live. That’s why every day is precious, a step toward my dreams and you.

분류 전체보기

  • Daily Growth
Swift 익스텐션 활용법: 연산 프로퍼티, 메서드, 서브스크립트 추가하기

Swift 익스텐션 활용법: 연산 프로퍼티, 메서드, 서브스크립트 추가하기

2025.05.14
익스텐션이란?익스텐션(Extension) 은 말 그대로 기존에 존재하는 타입에 기능을 ‘확장’해주는 기능이다. 마치 기존에 완성되어 있는 레고 블록에 다른 블록을 덧붙여서 새로운 기능을 붙이는 것과 비슷하다.익스텐션은 구조체(struct), 클래스(class), 열거형(enum), 프로토콜(protocol) 등의 타입에 새로운 기능을 추가하는 문법이다.중요한 점은, 원래의 코드에 손대지 않고도 기능을 더할 수 있다는 것이다. 즉, 다른 사람이 만든 타입이더라도, 혹은 애플이 만든 타입이더라도 익스텐션을 통해 기능을 추가할 수 있다. 이게 바로 익스텐션의 매력이다. 익스텐션으로 할 수 있는 것들익스텐션을 통해 어떤 기능을 추가할 수 있을까?(: 아래와 같은 것들이 가능하다.연산 프로퍼티 (계산해서 값을 반..
스위프트 프로토콜 vs 클래스 상속: 유연한 기능 구현을 위한 최적의 선택

스위프트 프로토콜 vs 클래스 상속: 유연한 기능 구현을 위한 최적의 선택

2025.05.11
스위프트에서 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등을 정의하는 청사진이다. 클래스, 구조체, 열거형은 이러한 프로토콜을 채택(Adopt)하여 실제로 기능을 구현할 수 있다.단, 프로토콜은 클래스를 상속하지 않고, 요구사항을 정의만 하며 구현은 직접 하지 않는다. 즉, 프로토콜은 다른 언어에서 말하는 인터페이스와 유사하지만, 스위프트에서는 그들만큼 강력한 구현을 요구하지 않는다(:1. 프로토콜 정의 및 요구사항protocol Talkable { var topic: String { get set } // 주제에 대한 프로퍼티 (읽고 쓸 수 있어야 함) var language: String { get } // 언어에 대한 프로퍼티 (읽기만 가능) ..
Swift : assert, guard, 그리고 제어 흐름 제어문

Swift : assert, guard, 그리고 제어 흐름 제어문

2025.05.11
assert란 무엇인가?assert는 개발 중 예상치 못한 상황이 발생했는지 확인하기 위한 디버깅 도구다. 코드가 실행될 때 특정 조건이 반드시 참(true)이어야 한다고 판단되면, 그 조건을 assert로 명시할 수 있다. 만약 그 조건이 거짓(false)이라면 프로그램은 실행 중단되고, 지정된 메시지를 출력한다.var someInt = 0assert(someInt == 0, "someInt는 0이여야 합니다.")위 코드에서 someInt가 0이 아니면, "someInt는 0이여야 합니다."라는 메시지를 출력하며 앱이 중지된다. 중요한 점은, assert는 디버그 모드에서만 동작하며 실제 사용자에게 배포되는 릴리즈 버전에서는 무시된다는 것이다.assert의 메시지 "..."는 해당 조건이 거짓일 때 출..
Swift에서 is와 as로 배우는 타입 확인과 변환의 핵심

Swift에서 is와 as로 배우는 타입 확인과 변환의 핵심

2025.05.11
타입 캐스팅이란 무엇인가?타입 캐스팅은 객체의 타입을 다른 타입으로 변환하는 과정이다. 그러나 이때 중요한 점은 타입을 변경하는 것이 아니라 객체가 다른 타입을 참조하도록 변환하는 것이라는 점이다. 쉽게 말해, 어떤 클래스의 인스턴스를 부모 클래스나 자식 클래스의 타입으로 변환하여 사용할 수 있도록 해주는 기능이다.타입 캐스팅은 is와 as라는 키워드를 사용하여 진행된다. is는 객체의 타입이 특정 타입에 맞는지 확인할 때 사용하고, as는 객체의 타입을 다른 타입으로 변환할 때 사용된다. 타입 캐스팅의 예시우리는 타입 캐스팅을 이해하기 위해, 아래와 같은 간단한 클래스를 정의해보자.class Person { var name: String = "" func breath() { pr..
Swift 옵셔널 체이닝과 nil 병합 연산자

Swift 옵셔널 체이닝과 nil 병합 연산자

2025.05.11
Swift를 공부하다 보면 옵셔널(Optional)이라는 개념을 꼭 마주하게 된다. 옵셔널은 "값이 있을 수도 있고, 없을 수도 있는 변수"를 뜻한다.Swift는 안전한 언어이기 때문에, 값이 없을 수 있는 상황에서는 반드시 옵셔널로 처리해야 한다.하지만 이 옵셔널을 다루다 보면 종종 코드가 복잡해지고, 옵셔널 안의 옵셔널을 꺼내야 할 때마다 여러 번 if let을 중첩해서 써야 해서 불편함이 생긴다.이럴 때 옵셔널 체이닝(Optional Chaining)과 nil 병합 연산자(nil coalescing operator) 를 사용하면 깔끔하게 처리할 수 있다(: 1. 옵셔널 체이닝이란?옵셔널 체이닝은 ?. 연산자를 이용해 옵셔널 내부에 또 다른 옵셔널이 있을 때 안전하게 접근하는 방법이다.중간에 하나라도..
Swift 클래스, 인스턴스, 그리고 메모리 관리: init과 deinit의 역할

Swift 클래스, 인스턴스, 그리고 메모리 관리: init과 deinit의 역할

2025.05.10
스위프트(Swift)는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)을 지원하는 언어로, 클래스(Class)와 객체(Object)의 개념을 기본으로 한다. 클래스를 이용해 객체를 만들고, 그 객체를 메모리에서 관리하는 방식은 매우 중요하다. 오늘은 스위프트에서 클래스와 인스턴스, 그리고 메모리 관리에 관련된 핵심 개념인 init과 deinit에 대해 기록해보고자 한다.1. 클래스와 인스턴스의 차이스위프트에서 클래스는 객체를 만들기 위한 설계도에 해당한다. 클래스를 통해 객체가 어떻게 행동할지 정의하고, 그 정의를 바탕으로 객체를 생성하게 된다. 반면, 인스턴스는 그 클래스를 기반으로 실제 메모리 상에 만들어진 객체를 말한다.예시:class Dog { var nam..
Swift 클래스 상속 제대로 알기: 프로토콜과 final, override

Swift 클래스 상속 제대로 알기: 프로토콜과 final, override

2025.05.09
프로그래밍을 배우다 보면, "상속"이라는 개념이 꼭 나온다. 그런데 이게 처음에는 되게 추상적이고 어려운 말처럼 느껴질 수 있다."부모 클래스?", "override?", "final?" 이런 단어들이 막 나오는데, 말도 어렵고 개념도 어려워서 머리가 아파올 수 있다 ㅎㅎ. 그래서 오늘은 정말 쉽게, 동물을 예시로 들어서 하나씩 풀어보려고 한다. Swift 코드도 같이 보면서, 진짜 왜 상속이 필요한지 이해해보자. 🧠 상속이란?먼저, 상속(inheritance)이란?"어떤 클래스가 다른 클래스의 기능을 물려받는 것"이다.예를 들어, ‘동물(Animal)’이라는 큰 개념이 있고, 그 아래에 ‘개구리’, ‘오리’ 같은 동물들이 있다.이때, 공통된 특징(예: 움직인다)을 부모 클래스인 Animal에 적어두고..
Swift 프로퍼티 감시자: willSet과 didSet 완벽 이해하기

Swift 프로퍼티 감시자: willSet과 didSet 완벽 이해하기

2025.05.05
Swift에서 프로퍼티 감시자는 저장 프로퍼티의 값이 변경될 때 그 변화를 추적하고, 변경 전후에 원하는 동작을 수행할 수 있는 강력한 기능이다. 이번엔 willSet과 didSet을 사용하여 어떻게 프로퍼티 값을 감시하고, 그 값의 변화를 추적할 수 있는지 기록해보고자 한다.1. 프로퍼티 감시자란?프로퍼티 감시자는 저장 프로퍼티의 값이 변경될 때 변경 직전 또는 변경 직후에 자동으로 호출되는 특별한 코드 블록이다. 이 블록을 사용하면, 프로퍼티 값이 어떻게 변화하는지 추적하고, 그에 따라 필요한 작업을 할 수 있다.Swift에서 제공하는 프로퍼티 감시자에는 willSet과 didSet 두 가지가 있다.willSet: 값이 변경되기 직전에 호출된다.didSet: 값이 변경된 후 직후에 호출된다.두 블록 ..
Swift 프로퍼티 정리: 처음부터 끝까지 이해하는 계산 속성

Swift 프로퍼티 정리: 처음부터 끝까지 이해하는 계산 속성

2025.05.05
1. 프로퍼티란?프로퍼티는 클래스(class), 구조체(struct), 열거형(enum) 내부에서 정의하는 변수 또는 계산된 값을 의미한다.간단히 말하면, 객체가 "가질 수 있는 값" 또는 "계산을 통해 얻어지는 값"이다.struct Student { var name: String var age: Int}위 코드에서 name과 age는 저장 프로퍼티이다.저장 프로퍼티는 실제로 값을 저장하는 변수이고, 우리는 이 값을 읽고 수정할 수 있다. 2. 저장 프로퍼티와 연산 프로퍼티의 차이Swift에서는 프로퍼티를 크게 저장 프로퍼티와 연산 프로퍼티로 나눌 수 있다.각각의 차이점을 알아보자. 저장 프로퍼티저장 ✅값을 직접 저장함연산 프로퍼티저장 ❌값을 저장하지 않고 계산하여 반환함✅ 저장 프로퍼티저장 ..
Swift 클로저 고급편: 단축 인자, 암시적 반환, 후행 클로저, map, filter

Swift 클로저 고급편: 단축 인자, 암시적 반환, 후행 클로저, map, filter

2025.05.04
저번 시간에 이어 이번에는 좀더 다양한 클로저(Closure) 표현을 알아보자. 처음에는 함수와 비슷해 보이지만, 중괄호 {} 안에 in, $0, -> 같은 생소한 문법들이 등장하면서 낯설게 느껴질 수 있다. 특히, 다른 사람이 작성한 코드를 보면 클로저가 축약되어 표현된 경우가 많아 더욱 헷갈리는 경우가 많다.하지만 클로저는 Swift에서 굉장히 유용하고 자주 쓰이는 개념이다. 특히 축약 표현에 익숙해지면 코드를 훨씬 더 간결하고 깔끔하게 작성할 수 있다. 이번 글에서는 클로저의 고급 사용법, 특히 축약 표현을 중심으로 기록해보았다(: 1. 클로저 다시 간단히 정리클로저는 일종의 "이름 없는 함수"라고 생각하면 된다. 변수나 상수에 저장할 수도 있고, 다른 함수의 인자로 전달할 수도 있다. 이처럼 클로..
Swift 클로저 : 함수보다 강력한 이름 없는 함수

Swift 클로저 : 함수보다 강력한 이름 없는 함수

2025.05.04
Swift를 배우다 보면 “클로저(Closure)”라는 낯선 문법을 만나게 된다. 처음에는 생김새도 낯설고, 함수랑 뭐가 다른지도 헷갈릴 수 있다.하지만 걱정할 필요 없다. 클로저는 결국 함수와 아주 비슷하며, 익숙해지면 오히려 더 유연한 코드를 짤 수 있도록 도와주는 도구이니까(:1. 클로저란?간단히 말해, 클로저는 이름이 없는 함수다.함수처럼 값을 받고 결과를 반환할 수 있으며, 코드 블록 자체를 변수에 저장하거나 다른 함수에 넘길 수 있다.Swift에서는 함수도 사실 이름이 붙은 클로저일 뿐이다. 2. 클로저 문법Swift에서 클로저는 다음처럼 생겼다:{ (매개변수 목록) -> 반환타입 in 실행 코드}예시:{ (a: Int, b: Int) -> Int in return a + b}이 클..
Model Context Protocol(MCP)? LLM 생태계를 재정의하는 새로운 표준

Model Context Protocol(MCP)? LLM 생태계를 재정의하는 새로운 표준

2025.05.02
Model Context Protocol(MCP)은 LLM 모델 간 호환성과 프롬프트 전송 방식을 표준화하는 신기술이다. MCP의 정의, 구성 요소, 활용 사례, 그리고 AI 개발자에게 주는 의미를 기록해보고자 한다(:MCP란 무엇인가?Model Context Protocol(MCP)은 최근 대형 언어 모델(LLM, Large Language Model) 생태계에서 주목받는 프롬프트 및 컨텍스트 통신 표준이다. LLM 기반 애플리케이션이 빠르게 확산되면서, 다양한 모델 간 프롬프트 호환성 문제와 컨텍스트 공유의 비표준화 문제가 드러났다. MCP는 이러한 문제를 해결하기 위해 등장한 프로토콜로, LLM 시스템이 프롬프트, 메타데이터, 설정값 등을 구조화된 방식으로 교환할 수 있도록 한다.쉽게 말해, MCP..
  • 최신
    • 1
    • 2
    • 3
    • 4
    • ···
    • 36
  • 다음

정보

Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

  • Daily Growth의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (426)
      • Design History (69)
      • IT (129)
      • Typography (13)
      • UX • UI Design (10)
      • Money (62)
      • Health (53)
      • Words (6)
      • Reading (19)
      • English (64)

    나의 외부 링크

    • lody.design
    • lody.canada
    • lody.study
    • lody.diary

    정보

    self-improvement의 Daily Growth

    Daily Growth

    self-improvement

    블로그 구독하기

    • 구독하기
    • 네이버 이웃 맺기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © self-improvement.

    티스토리툴바