Swift
-
What's new in Swift 5.10Swift 2024. 3. 21. 18:55
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Swift 5.10에서 어떤것들이 변했는지 학습해보겠습니다 🙋🏻 사실 Swift 5.10은 얼마전인 3월 5일에 릴리즈가 되었고, 현재 Swift 공식 레포를 들여다보면 Swift 6.0 릴리즈를 준비중이에요. 실제로 ChangeLog를 살펴보면 Swift 6.0 변화를 위해 현재 활발히 진행중인걸 볼 수 있습니다! 그래서 곧 나올 Swift 6.0을 알아보기전 Swift 5 버전대의 마지막인 Swift 5.10에 대해 살펴보겠습니다 🚀 Swift 5.10 완전히 엄격화된 동시성 체크 Swift 5.10에서는 완전히 엄격화된 동시성 체크를 통해 알려진 모든 정적 데이터 경쟁 상태에 대해 안전해졌습니다. -strict-concurrency=complete 옵션을..
-
New access modifier - packageSwift 2024. 3. 4. 19:08
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Swift 5.9에서 새로 나온 접근 제어자인 package에 대해 알아보겠습니다 🙋🏻 나온 배경 원래 기존에 접근제어자라고 하면 흔히 알고 있는 5가지가 있죠! open, public, internal, fileprivate, private 만약 여러분들이 모듈화를 시키고 다른 모듈 패키지의 코드를 가져와 사용한다고 가정할때, 대부분 public으로 작업했을겁니다. 저도 물론 그렇구요..! 여기서 public으로 작업하게되면, 패키지 내부와 외부 모두에서 접근할 수 있게 됩니다. 이 경우는 편리하긴 하지만, 바람직하지 않을때도 있습니다 🥲 패키지 외부의 코드를 공유하지 않고 패키지 내의 모듈 간에 코드를 공유하여야 하는 경우도 있으니까 말이죠! 그렇기에, 어..
-
Sequence를 알아보자 🤿Swift 2024. 1. 29. 19:06
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Swift의 Sequence에 대해 학습해보겠습니다 🙋🏻 Sequence에 대해 직접적은 아니더라도 모두 개발하시면서 알게 모르게 스며들어 있습니다! Array, Dictionary, Set 같은 Collection 타입들을 자주 사용하실텐데요. 이 컬렉션 타입들은 Sequence 프로토콜을 채택하고 있어요. protocol Collection : Sequence 그렇기에 이 시퀀스가 대체 어떤거고 기본 컬렉션 타입들을 사용하지 않고 시퀀스 타입을 만들어보는것들에 대해 알아보겠습니다. Sequence 순서라는 뜻을 가진 이 시퀀스 프로토콜은 해당 요소에 대해 순차적이고 반복적인 액세스를 제공하는 유형입니다. 아래와 같은 정의를 가져요. protocol Sequ..
-
Assertions & PreconditionsSwift 2024. 1. 25. 19:57
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Assertions과 Preconditions이라는 개념과 실제 사용되는 메서드들을 살펴볼까 합니다 🙋🏻 우선 Assertions와 Preconditions가 어떤 개념인지부터 알아보면 좋을것 같네요! Assertions & Preconditions 두가지 모두 런타임에서 사용할 수 있는 조건 검사입니다. 추가 코드를 실행하기 전에 해당 필수 조건이 충족되는지 확인하는데 사용하죠. 조건은 Bool 타입으로 결국 true이면 다음 코드를 이상없이 수행하고 만약 false이면 더 이상 코드를 실행하지 않고 앱을 죽여버립니다! 런타임 에러가 발생하죠! 즉, 강제로 앱을 꺼버릴 수 있다는 특징이자 단점이 될 수 있는 부분이 핵심적이라고 보입니다 🤔 그럼으로 사실 치명..
-
추상화와 다형성Swift 2023. 12. 11. 19:35
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 추상화와 다형성에 대해 얘기해볼까 합니다 🙋🏻 다들 객체 지향 프로그래밍, 즉 OOP라고 불리는것에 대해 특징을 알고 있을거에요. 추상화, 다형성, 캡슐화, 상속 그 중에서 해당 포스팅에서는 추상화와 다형성이라는것에 대해 한번 정리하고 넘어가보겠습니다. 처음 객체 지향이라는 개념을 접하실 때 은근히 많이 헷갈려하시는 포인트인것 같아서 최대한 쉽게 풀어보면서 전달 해보고 싶어서 이렇게 포스팅을 쓰게 되었습니다ㅎㅎ 혹시 OOP에 대해 무엇인지 처음 들어보신다면 우선 다른 문서들을 먼저 참고하고 오는것이 더 도움이 될것 같아요! (나중에 여유가 있으면 OOP도 한번 정리해볼께요 😀) 그럼 추상화와 다형성 알아볼까요? 추상화 Abstraction이라고 불리는 객체지향..
-
rethrows로 에러를 다시 던져보자 🥏Swift 2023. 11. 3. 09:34
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Swift의 rethrows에 대해 한번 학습해보겠습니다 🙋🏻 rethrows? 우선 rethrows가 뭘까요? throws라는것은 다들 안다고 가정해보겠습니다. 에러가 발생할 수 있는 상황에서 에러를 catch하여 에러를 다른쪽에서 처리할 수 있도록 넘겨주는것 쉽게 말해 던져주는 의미죠? 그런 관점에서 rethrows는 re + throws입니다. 즉, 다시 던져주는것인데 또 쉽게 표현해보면 넘겨진 에러에 대해 또 다른쪽으로 넘겨주는것이라고 볼 수 있어요! 흠.... 말로는 사실 복잡해보이고 이해가 안갈 수 있습니다. 일단 우리가 좋아하는? 코드로 쉽게 확인하기 전에 rethrows를 딱 구두로 풀어서 정의해보고 가시죠 😄 공식문서에서는 rethrows가 함..
-
String의 Small String OptimizationSwift 2023. 10. 30. 08:58
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Swift String의 Small String Optimization에 대해 학습해보겠습니다 🙋🏻 우선 오늘의 학습을 거치기전에 선행되어야 할 조건이 있어요! 바로 요 포스팅입니다! Colletcion은 Struct 타입인데 Heap에 저장되는 이유? 안녕하세요. 그린입니다 🍏 이번 포스팅에서는 Swift 세상으로 넘어와서 Collection이라는 값 타입이 왜 Heap에 저장되는지 그 이유를 파헤쳐보겠습니다! 이전 포스팅에서 메모리 덤프를 분석하다가 green1229.tistory.com 왜냐하면 오늘 배워볼 부분이 String은 Collection 타입이라 Heap에 원본 데이터가 저장되고 복사가 일어난 후 값의 수정이 발생하면 서로 다른 메모리 영역을 ..
-
Default Initializers의 흔한 오해Swift 2023. 10. 17. 14:48
안녕하세요. 그린입니다 🍏 이번 포스팅은 짧게 Swift의 Access Level을 공부하면서 오해가 쌓일 수 있는 부분에 대해 한번 되짚어보려고해요 🙋🏻 ⚠️ 내용 다소 짧음 주의 ⚠️ 일단 어느 부분에서 오해가 쌓일 수 있었는지 공식 문서를 통해 한번 확인해볼께요ㅎㅎ Default Initializers 바로 Default Initializers 부분인데요. 여길 한번 해석해보면 이렇습니다. "Swift는 모든 프로퍼티가 기본값을 가지고 있고, 그 자체로 적어도 하나의 초기화 함수를 제공하지 않는 구조체나 기본 클래스에 대해 자동으로 인자가 없는 기본 초기화 함수를 제공합니다. 이것을 Default Initailizers인 기본 이니셜라이저라고 부릅니다. 기본 이니셜라이저의 접근 레벨은 일반적으로 해..