동동이

동동이

  • 분류 전체보기 (84)
    • iOS (34)
    • SWIFT (23)
    • Design Pattern (3)
    • Combine (2)
    • RxSwift (3)
    • Algorithm (12)
    • Git (5)
    • 회고 (2)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

동동이

컨텐츠 검색

태그

BFS iOS Unit Test SWIFT RxSwift dp IOS Git CAShapeLayer 프로그래머스 UIBezierPath 알고리즘 uicollectionview UICollectionViewFlowLayout CABasicAnimation RxSwift Observable Algorithm iOS Dev 백준 iOS Developer Core Animation

최근글

댓글

공지사항

아카이브

[Swift] Macro (1)

이전에 Macros라는 Swift 언어의 기능이 나왔다고 알고있었는데, 느낌만 알고있다 이번에 SwiftUI + TCA 스터디를 진행하다보니 TCA에서 Macros를 활용하는 경우가 보여서 어떤 기능인지 자세히 알아보려고합니다 🙂 만든 이유우선 Macros의 개발자문서 설명을 보면 '컴파일 타임에 코드를 발생시킨다'고 되어있는데요. 뭐 여기 본문만 보면은 어떤 느낌인지 감이 잘안오는데, 한번 알아보면서 살살 잡아가보자구요Use macros to generate code at compile time좀더 자세한 설명을 보면 개발자들이 코드의 반복을 피하기위해 우리의 코드를 컴파일 타임에 전환해준다고하는데요. 그림을 보면 우리가 작성한 코드가 'Expanded code source'로 확장되는 모습을 볼수있..

자세히보기
[2023년 회고] 3년차 iOS 개발자

2022년도 회고를 하고 넘어갔어야 하는데, 하지못했고 2023년은 여러가지로 변하고 또 신년에는 마음가짐을 새롭게하고 정비하자는 의미에서 올해를 돌아보고 2024년을 계획해보려고 3년차 개발자의 회고를 작성해보려고 합니다 👊🏻 회사원으로서 2024년 1월 25일부로 네이버제트에 입사해서 근무를 한지 만으로 3년이 흐르게 되었다. 그래도 나름 한 회사에 오래 있었고 그동안 많은 변화들이 있었는데 2023년은 가장 많은 변화가 있었던 해였던 것 같다. 조직개편 우선 가장 큰 변화는 아무래도 조직개편이었던 것 같다. 처음에 조직개편을 한다는 소문이 있을 때, iOS 개발자임은 변화가 없으니 나에게는 크게 변화가 없을 것 같다고 느꼈다. 하지만 조직개편이 1년에 2번정도 있었는데 생각과는 달랐다. 나의 업무에..

자세히보기
[iOS] UICollectionViewCompositionalLayout (1)

우선 이번 글에서는 UICollectionView의 Layout을 지정하는 새로운 방법을 알아보려고합니다 구성을 위한 가장 기본적인 컴포넌트와 어떤 구조를 가지고 있는지 정도만 알아보고 다음 글에서 좀 더 구체적인 사용법들을 포스팅해보겠습니다 :) UICollectionViewCompositionalLayout 우선 애플에서는 해당 레이아웃에 대해 유연하고 적응력 있게 우리가 기존에 사용하던 CollectionView의 레이아웃을 구성할 수 있다고 설명하고 있습니다 A layout object that lets you combine items in highly adaptive and flexible visual arrangements. UICollectionViewCompositionalLayout은 한..

자세히보기
[iOS] Dynamic Framework & Static Framework

요즘 회사 프로젝트의 크기가 커지다보니 각 모듈간의 의존도도 커지고 빌드 시간도 오래 걸리게 되면서, Framework 단위로 분리해서 관리하는 방법에 관심을 가지게 되었습니다. 그러다보니 모르는 부분들도 있어서 이전에는 가볍게 알고 있던 Static Framework & Dynamic Framework에 대해 좀 더 깊게 알아보려고 합니다 🙃 Dynamic Framework 우선 Dynamic Framework는 Xcode에서 Framework를 생성하게 되면 기본적으로 Dynamic Framework로 생성됩니다. Dynamic Framework는 그림에서처럼 Static Linker를 통해 Dynamic Library Reference가 Application Code로 들어가고 사용시에는 해당 참조..

자세히보기
[iOS] RunLoop란

이번에 기능 개발중에 Timer를 받는 RunLoop로 인해 이슈가 있었던 경험이 있어서 다시금 RunLoop를 좀 더 자세히 알아보고자 블로그를 써보려고 합니다 🥲 RunLoop란? RunLoop란 쓰레드와 관련되어있는 인프라의 일부인데, 입력 이벤트(키보드, 터치)들을 처리하기 위한 루프입니다. 그렇다면 RunLoop의 목적은 무엇일까요? 쓰레드가 필요할 때는 일을하게 하고 필요가 없을 때는 쉬게하기 위한 목적이라고 합니다! 아무래도 리소스를 효율적으로 사용하기 위한 기능(?)인 것 같습니다. 해당 RunLoop내에서 들어오는 이벤트들을 처리하고 이후에는 쉬게할 수 있으니 그런 것 같아요. 단, 주의할 점은 RunLoop는 자동으로 관리되는 것이 아니고 우리가 개발할 때, 적절한 RunLoop 내에서..

자세히보기
[Swift] Codable (2)

저번 Codable (1) 글에 이어서 이번에는 좀 더 심화된 사용법에 대해 알아보려고 합니다. [Swift] Codable (1) 블로그에 너무 소홀했는데, 오랜만에 정신을 차리고 다시 포스팅을 진행해보려고 합니다 🥲 오늘은 그동안 스터디를 진행하면서 이 부분은 꼭 따로 공부해서 써봐야지 했던 부분인 Codable에 관 dongminyoon.tistory.com 평소에는 이렇게까지 사용할 수 없을 수 있는데, 분명 알아두면 언젠가는 꼭 쓸일이 있을 것 같아요 🙃 Container란? Container는 우리가 디코딩 & 인코딩을 하기 위한 Context라고 생각하면 될 것 같습니다. 각 기능을 위한 데이터의 구조(?) 정도로 저는 크게 이해했는데, 여기서 저희가 사용할 수 있게 크게 3가지 흐름으로 ..

자세히보기

  • [GIT] Merge vs Rebase 차이

    GIT을 프로젝트를 하며 다들 자주 사용하시는데, 혹시 브랜치를 병합할 때, Merge와 Rebase을 사용해본 경험이 있으신가요⁉️ 저는 주로 Rebase fork해온 프로젝트를 upstream에 맞게 동기화하고 싶을 때 사용했는데요. 정보를 fetch upstream을 통해 가져오고 rebase을 통해서 병합을 했었어요. Merge 얘는 upstream이 없고 origin만 있는 상태에서 Git을 관리할 때 사용했었던 방법이에요. 사용하면서 어떤 상황에 사용하는지 형태만 보고 사용했었지, '왜 이걸 사용하지'는 생각을 해보지 않았던 것 같아요. 그래서 이번 기회에 동작 원리를 알아보고 정리해보려고해요~~ 기회가 된다면 다음 GIT 포스팅은 오픈소스를 관리하는 방식인 fokr한 저장소를 관리하는 방법을..

  • [iOS] Dynamic Framework & Static Framework

    요즘 회사 프로젝트의 크기가 커지다보니 각 모듈간의 의존도도 커지고 빌드 시간도 오래 걸리게 되면서, Framework 단위로 분리해서 관리하는 방법에 관심을 가지게 되었습니다. 그러다보니 모르는 부분들도 있어서 이전에는 가볍게 알고 있던 Static Framework & Dynamic Framework에 대해 좀 더 깊게 알아보려고 합니다 🙃 Dynamic Framework 우선 Dynamic Framework는 Xcode에서 Framework를 생성하게 되면 기본적으로 Dynamic Framework로 생성됩니다. Dynamic Framework는 그림에서처럼 Static Linker를 통해 Dynamic Library Reference가 Application Code로 들어가고 사용시에는 해당 참조..

  • [iOS] 앱에서 Web 보여주기 (WKWebView, SFSafariViewController, Safari 열기)

    iOS에서 앱 내에서 Web을 보여주어야 하는 경우가 있습니다. 이 때, 크게 3가지 방법이 있는데요. 이 방법에 대해 간단히 사용법을 알아보고 공부해보겠습니다. 일단 UIWebView를 사용하는 방법도 있는데, 이제는 Deprecated 된 것으로 알고있는데요. (저도 사용해본적은 없습니다..) 그래서 UIWebView를 제외하고 3가지의 방법을 알아보려고 합니다. Safari 앱을 열어서 보여주기 SFSafariViewController를 사용하여 보여주기 WKWebView를 사용하여 보여주기 Safari 앱 가장 간단한 방법인데요. 그냥 아이폰에 설치된 Safari를 열어서 웹 페이지를 로딩하는 방법입니다. 코드도 정말 간단하고 별도의 설정도 필요없는데요. 장점이라하면은 간단함...?! 단점은 커스..

  • [iOS] QR Code Scanner 만들기 - AvFoundation 이용

    최근데 카메라를 이용하는 프로젝트가 있었는데 여기서 활용했던 QR Code 스캔 기능에 대해 포스팅을 해보려고 합니다. 기본적으로 만들기 위해서 iOS Architecture에서 Media 영역에 속하는 AvFoundation을 이용하였습니다. 간단하게 AvFoundation을 이용하는 경우를 공식문서에서 찾아보면, iPhone의 카메라, 오디오 등을 이용하는 경우에 사용하면 된다고 명시되어 있습니다. 즉, 여러분들은 카메라를 이용해 사진, 동영상 촬영 + 오디오 녹음이 필요할 때 가장 먼저 AvFoundation을 생각하시면 될 것 같습니다. 그럼 AvFoundation을 이용해서 QR Code Scanner을 만들기 전에 사전 준비 작업 먼저 해주겠습니다. 위의 그림과 같이 QR Code가 인식되면 ..

  • [RxSwift] Operator란?

    오늘은 간단하게 RxSwift에서 유용하게 사용되는 Operator들에 대해서 어떻게 동작하는지 알아보겠습니다~ RxSwift Operator Operator를 이용하면 Observable로 들어오는 이벤트들을 여러가지 방식으로 연산이 가능하게 됩니다. 여러가지 Operator 중 ReactiveX에 있는 범주에 따라 자주 사용하는 Operator를 알아보겠습니다..!! 크게 3가지로 나누어서 알아보겠습니다. Transforming Observables Filtering Observables Combining Observables Transforming Operators 1. map 방출된 이벤트를 특정 함수를 적용하여 새로운 이벤트로 변형하여 방출시킵니다. (Swift의 map 함수와 동일합니다.) O..

  • [iOS] WKWebView (1) - 웹 뷰 사용하기

    이번에 프로젝트를 진행하면서 이번에 웹 뷰를 사용해서 해야하는 간단한 작업을 받았습니다 :) 그래서 이 참에 WKWebView는 자주 사용하는 컴포넌트이기도 해서 확실하게 공부해놓으면 도움이 되겠다 싶어서 포스팅을 해보려고 합니다. 뭔가 혼자서 정리를 하는데 내용이 너무 많은 것 같아서 좀 여러 개로 포스팅을 작성해볼게요..!! 이전에 iOS에서 WebView를 사용하는 방법 3가지에 대해서 간단히 포스팅을 했었는데 연관되진 않지만 보고와도 괜찮을 것 같네요 :) [iOS] 앱에서 Web 보여주기 (WKWebView, SFSafariViewController, Safari 열기) iOS에서 앱 내에서 Web을 보여주어야 하는 경우가 있습니다. 이 때, 크게 3가지 방법이 있는데요. 이 방법에 대해 간단히..

  • [iOS] UICollectionViewLayout 설정

    UICollectionView을 자주 사용하실 것 같은데 UITableView와 가장 크게 다른 점은 커스텀하게 Layout을 설정할 수 있는 프로퍼티가 있다는 것 같아요. 기본적으로 2가지 방법으로 Layout을 설정할 수 있는데, 상황에 따라 다르게 사용할 수 있어요. 2가지 방법으로는 ✔️ UICollectionViewFlowLayoutDelegate 활용 ✔️ UICollectionViewFlowLayout 객체 활용 이렇게 2가지 방법으로 설정할 수 있다. UICollectionViewFlowLayout 객체를 활용하는 경우는 엄청 복잡한 레이아웃을 커스텀해야하는 경우나 간단하게 초기 값을 설정하기 위해 사용했어요. UICollectionViewFlowLayoutDelegate 같은 경우는 마찬..

  • [iOS] Github Action 이용 - Build

    이번에 회사에서 사용하는 Github이 드디어 업데이트 되면서, Github Action을 사용할 수 있게 되었습니다 :) 당연히 새로운게 나왔으니 사용하고 싶었고, 단점보다는 장점이 많은 것 같아 바로 도입하게 되었습니다. 기존에는 Jenkins + fastlane로 CI/CD가 설정되어 있었고 여기서 CI 과정만 Github Action로 대체해보았습니다~ 그렇다면 옮기면서 공부한 것과 Github Action이 무엇인지 알아볼게요. Github Action Github Action이란게 특별한게 있는 건 아닙니다 ㅎㅎ.. 그냥 기존에 CI/CD 역할을 할 수 있는 많은 툴 들이 있잖아요. 그 중에 Github에서 만든 하나의 툴입니다. Build, test, and deploy your code. ..

  • [iOS] WKWebView (2) - 웹 뷰 사용하기

    이전 글에서 WKWebView (1) 사용하기에 대해 작성했었는데요~ [iOS] WKWebView (1) - 웹 뷰 사용하기 이번에 프로젝트를 진행하면서 이번에 웹 뷰를 사용해서 해야하는 간단한 작업을 받았습니다 :) 그래서 이 참에 WKWebView는 자주 사용하는 컴포넌트이기도 해서 확실하게 공부해놓으면 도움이 되 dongminyoon.tistory.com 이번에는 이어서 WebView에서 JavaScript 코드를 어떻게 호출하고 JavaScript에서 어떻게 네이티브 앱 코드를 호출하는지 어떻게 JavaScript로부터 이벤트를 받아서 실행하는지에 대해 알아보겠습니다. WKUserContentController - 웹, 네이티브 소통하기 우선 JavaScript 코드를 네이티브에서 호출하거나 네이..

  • [SWIFT] OptionSet

    Swift의 Collections 타입 중에 OptionSet이라는 타입에 대해 작성해보려고 합니다. 저도 사용해본 적은 없지만, 사용해보면 좋겠다는 생각이 들어서 공부를 하고 정리를 하게되었습니다. OptionSet란 OptionSet은 비트의 집합으로 자료구조 중에서 Set의 특징을 가지고 있는 자료구조입니다. Apple 개발자 문서를 보아도 Collections > Set으로 분류가 되어 있습니다. 비트의 집합으로 구성된다는 뜻은 만약 0000의 4비트가 존재한다면 각각의 비트가 하나의 옵션을 나타낸다는 뜻입니다. 지금은 이정도만 이해를 하고 넘어가고 뒤에 실제 예시를 통해 이해하면 될 것 같습니다. (즉, 각 옵션에 대해서 1, 2, 4, 8, 16의 값을 가지게 될 것입니다..!!) 그렇다면 이..

티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바