Swift

    [Combine 책 정리] Chapter 13: Resource Management

    안녕하세요 코찐입니다. 아래의 자료를 따라서 공부하고 있습니다. https://www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0 리소스 관리하는 Publisher 들인데, API 작업할 때 유용하게 사용할 수 있습니다. share value 타입이 아닌 reference 타입의 publisher를 공유할 수 있도록 해줍니다. 주의할 점은 이미 complete 된 share publisher를 구독하면 complete만 받게 됩니다. let shared = URLSession.shared .dataTaskPublisher(for: URL(string: "https://www.raywenderlich.com")!) .ma..

    [Swift 입문] 3. 변수와 상수

    안녕하세요. 코찐 입니다. 이제부터는 https://docs.swift.org/swift-book/ 를 기반으로 개념을 살펴보겠습니다. Swift Language Guide 인데요. 애플에서 공식 가이드로 작성한 것이라서 군더더기 없는 설명을 자랑합니다. 입문자가 전체를 살펴보기에는 내용이 많아서, 핵심만 추려서 살펴보겠습니다. 이번 글에서는 변수와 상수에 대해 알아보겠습니다. 데이터를 표현할 때 사용됩니다. 변수는 var로 지정합니다. 나중에 변경 가능한 값 입니다. 상수는 let으로 지정합니다. 한번 지정하면 변경되지 않습니다. 첫번째 예: 횟수 제한이 있는 로그인 화면 로그인 화면을 만들 때, 재시도 가능 횟수가 정해진 경우가 많습니다. 그럴 때 변수와 상수를 이렇게 사용할 수 있습니다. let m..

    [Swift 입문] 2. Playground 사용해보기

    안녕하세요 코찐 입니다. 이번에는 저희가 실습동안 사용할 playground를 한번 살펴보겠습니다. 1. Mac OS의 App Store에서 Xcode를 설치합니다. 2. Xcode > File > New > Playground 를 누릅니다. 3. Blank를 선택합니다. 4. 플레이그라운드 파일을 저장할 위치를 선택하고, 파일명을 지정합니다. 저는 SwiftBeginner.playground 로 만들어봤습니다. 5. 우리의 첫번째 Playground 가 생성되었습니다. 6. print(str)을 입력해봅니다. 7. 파란색 실행버튼을 클릭하면, 아래 콘솔 창에 Hello, playground 가 출력된 것을 볼 수 있습니다. 이제 이곳에서 마음대로 스위프트를 실험해볼 수 있습니다. 이것저것 눌러보면서 둘..

    [Swift 입문] 1. 우리가 Swift를 배워야하는 이유

    연재를 시작하며 안녕하세요. 코딩찐따 코찐 입니다. 2021년에는 인프런 강의를 개설하는걸 목표로 잡았는데요! 막연히 구상만 하는 것 보다 먼저 블로그를 연재하면서 큰 그림을 그려갈까 합니다. 일주일에 한번은 포스팅 하는것이 목표입니다. 무엇보다 강의 주제가 중요할텐데, 지금 실무에서 사용하고 있는 언어인 Swift를 바탕으로 연재해볼까 합니다. Swift를 처음 만난 사람들에게는 도움이 될 수 있을거라 생각합니다. 실무에 투입되기 전에 익히면 좋을 내용들을 컨텐츠로 정리해보겠습니다. 우리가 Swift를 배워야하는 이유 배우기 쉽다 처음 개발을 시작하는 사람들을 고려하며 언어를 만들었다고 생각됩니다. 애플은 개발 진입장벽을 낮추는 노력을 계속해서 해오고 있습니다. 특히 다른 개발 언어를 접해본 적이 있다..

    [Swift] struct와 순환참조

    Struct를 사용하면 메모리 관리에 민감하지 않아도 된다고 생각했다. struct 안에서의 클로저 사용할 때 self를 참조해도 순환참조가 발생하지 않기 때문이다. 어느 순간 머릿속에서 struct 안에서는 포인터 참조를 걱정하지 않아도 된다고 착각하고 있었다. 그런데 이번에 문제가 생겼다. 바쁜 와중에 메모리 memory leak이 생겨버리니... 어이가 없기도 했고, 지금까지 제대로 모르고 있었다는게 부끄러워서 글로 작성해둔다. 이게 오히려 시간을 아끼는 길이길 바란다. struct MyStruct { let myClass: MyClass } class MyClass { var myStruct: MyStruct? } let myClass = MyClass() let myStruct = MyStruc..