Swift
-
추상화와 다형성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인 기본 이니셜라이저라고 부릅니다. 기본 이니셜라이저의 접근 레벨은 일반적으로 해..
-
Debouncer 만들기 (No Combine, No RxSwift)Swift 2023. 10. 9. 02:53
안녕하세요. 그린입니다🍏 이번 포스팅에서는 로직에서 아주 간단히 사용할 수 있는 Debouncer를 만들어 사용해보겠습니다 🙋🏻 No Combine, No RxSwift Combine이나 RxSwift에서 흔히 접할 수 있는 debounce의 사용과 혼동할 수 있어서 한번 짚고 넘어가볼께요. 예시로 애플 공식문서의 Combine 코드를 조금 더 알기 쉽게 변경하여 가져와보겠습니다. let bounces:[(String,TimeInterval)] = [ ("Black", 0), ("Green", 0.25), // 0.25s interval since last index ("Red", 1), // 0.75s interval since last index ("Blue", 1.25), // 0.25s inter..
-
Colletcion은 Struct 타입인데 Heap에 저장되는 이유?Swift 2023. 9. 25. 14:33
안녕하세요. 그린입니다 🍏이번 포스팅에서는 Swift 세상으로 넘어와서 Collection이라는 값 타입이 왜 Heap에 저장되는지 그 이유를 파헤쳐보겠습니다! 이전 포스팅에서 메모리 덤프를 분석하다가 string이 dump에 남아있는걸 보고 string을 조금 더 파헤쳐보고있었는데요. 잘 몰랐던 사실이나 잘못 알고 있었던 지식을 깨달았어요!그래서 이번에 String으로 시작했지만 Collecion이라는 상위 개념으로 같이 설명을 해보려합니다 🙋🏻 메모리 덤프 분석 (feat. fridump)안녕하세요. 그린입니다 🍏 이번 포스팅에서는 fridump를 이용해서 메모리 덤프 분석을 해볼까해요! 사실 보안팀에서는 각 앱의 보안을 진단하기 위해서 memory dump를 보고 분석하는 업무도 하고gree..
-
AVFoundation (feat. AVAudio)Swift 2023. 8. 25. 09:12
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 AVFoundation에 대해 기초를 알아보며 AVAudio 부분을 조금 더 개념적으로 파보려합니다 🙌 이전 포스팅에서 음성을 녹음하고 플레이하는 AVAudio를 실제 코드로 구현하면서 다룬적이 있어요! 거기서 AVFoundation을 조금 더 딥하게 다음 포스팅에서 얘기해본다고 했습니다. 그날이 오늘입니다!!!!! AVFoundation 우선 AVFoundation이 뭐하는 녀석인지부터 공식문서를 보면서 살펴볼께요. AVFoundation은 시청각 asset으로 작업하고, 카메라 장치를 컨트롤하며, 오디오를 처리하고, 시스템 오디오 인터랙션을 구성합니다. iOS에서의 AVFoundation은 Core 프레임워크쪽에 속해있습니다. 보시면 오늘 다뤄볼 Audio..
-
Swift HTTP Types 찍먹하기Swift 2023. 7. 31. 10:14
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 얼마전 공개된 Swift HTTP Types라는것에 대해 찍먹을 해보려해요. 최근 애플에서 Swift HTTP Types라는 새로운 오픈 소스 패키지를 만들었고 현재는 초기 단계이기에 활발히 진행되고 있습니다. 현재 릴리즈된 가장 최신 버전은 0.2.0이고 아직 메이저한 1.0.0 버전이 안나왔죠ㅎㅎ 그렇기에 현재 iOS에서도 기본 제공되는 프레임워크에 아직 속하지 않습니다🥲 조만간 Foundation 프레임워크에 같이 들어가지 않을까 추측해봐요! 현재는 찍먹해보고 싶으시다면 SPM으로 사용해야합니다! GitHub - apple/swift-http-types: Version-independent HTTP currency types for Swift Versio..