Swift
-
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..
-
available 심층 탐구하기Swift 2023. 7. 17. 09:28
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 available에 대해 조금 더 알아보는 학습을 해보려해요 🙌 바로 이전에 특정 버전에 대해 분기 처리하는 방법들을 살펴보면서 available을 잠깐 설명하고 간적이 있습니다. https://green1229.tistory.com/388 특정 버전에 대한 분기 처리하기 (systemVersion) 안녕하세요. 그린입니다 🍏 이번 포스팅에서는 특정 버전에 대한 분기처리하는 방법에 대해 알아보겠습니다 🙋🏻 일단 간단한 포스팅이 될 수도 있을것 같네요ㅎㅎ 분기 처리? 개발을 하다보 green1229.tistory.com 해당 available을 조금 더 심층 탐구해보는 시간입니다! available? 특정 플랫폼 또는 OS 버전에서 코드를 실행하도록 해줍니다. ..
-
Expand on Swift macros (feat. WWDC 2023)Swift 2023. 6. 10. 09:37
안녕하세요. 그린입니다🍏 이번 포스팅에서는 Swift 5.9에서 소개된 매크로 기능에 대해 알아보겠습니다🙌 Why macros? 우선 매크로를 왜 만들었는지 그 애플의 얘기를 들어볼까요? Swift는 표현적인 코드와 API를 작성하는것에 능합니다. 그렇기에 사용자가 반복적인 상용구 작성을 피하는데 도움이 되는 result builders와 같은 기능들을 제공하곤 하죠. 즉 이렇게 코드를 생성하면 Codable이 어떻게 작동하는지 정확히 알 필요 없이 Codable을 사용할 수 있고 Codable 지원을 추가하는것이 코드를 늘리면서까지 작성할 가치가 있는지 판단하고 결정할 필요가 없게 됩니다. 여기까지는 Swift 언어를 사용하면서 프로퍼티 래퍼라던지 Result builders라던지 등 많이 접해봤던 기..
-
Swift 5.9 슬쩍 맛보기 (feat. WWDC 2023)Swift 2023. 6. 9. 15:41
안녕하세요. 그린입니다🍏 이번 포스팅에서는 Swift 5.9가 소개되면서 새로 나온것들에 대해 살펴보겠습니다🙋🏻 전체적으로 Swift 개발 프로젝트 방식의 업데이트부터 언어적으로 매크로 기능도 이번에 생겼고 성능 및 안전도도 많이 향상되었다고해요. 저는 이번 포스팅에서는 중점적으로 Swift 언어에만 포커싱을 맞춰 한번 볼까합니다. if 및 switch 표현 변수를 초기화 할때 이제는 아래와 같이 if 및 switch 조건문을 사용할 수 있습니다. 즉, 코드를 줄이는데 많은 도움을 줍니다👍 // if let score = 800 let simpleResult = if score > 500 { "Pass" } else { "Fail" } print(simpleResult) // switch let comp..
-
@discardableResult를 왜 쓰지?Swift 2023. 6. 1. 15:34
안녕하세요. 그린입니다🍏 이번 포스팅에서는 @discardableResult에 대해 왜 쓰는지 어떨때 쓰는지에 대해 학습해보겠습니다🙋🏻 의문의 시작점 사실 @discardableResult에 대해 문득 왜 써야되는지 궁금해서 생각해보다가 포스팅을 하게 되었습니다. 보통 리턴 값이 존재하는 메서드를 호출 시 해당 리턴 값을 사용하지 않아도 경고 메시지를 띄워주지 않을때 사용하잖아요? 근데 생각해보면 리턴 값을 사용하지 않을거면 왜 해당 메서드를 선언할때 리턴 값을 가지게 함수 시그니처에 지정해줄까?라는 의문이 생겼어요🫠 어차피 리턴 값을 사용하지 않을거면 리턴 타입을 Void 즉 없다고 선언하는게 더 맞지 않나!?😳라고 꼬리 의문점들이 들었습니다! 그래서 한번 @discardableResult에 대해 알아..