iOS
-
쿠키로 안전하게 HLS m3u8 영상 접근하기iOS 2023. 3. 30. 16:14
안녕하세요. 그린입니다🍏 이번 포스팅에서는 HLS와 m3u8파일이 뭔지 그리고 이러한 영상들에 쿠키를 통해 어떻게 안전하게 리소스에 접근할 수 있는지 학습해보고 구현해보겠습니다🙋🏻 우선 쿠키로 안전하게 영상에 접근하기전 HLS와 m3u8이라는 개념에 대해 알아보시죠🕺🏻 HLS (HTTP Live Streaming) 표준 HTTP 기반 스트리밍 프로토콜로 HLS라고 흔히 불립니다. 즉, 쉽게 말해 가장 흔히 사용되는 비디오 스트리밍 프로토콜이라고 하죠. HTTP 파일 조각들로 비디오 파일을 나누고 이를 HTTP 프로토콜을 이용해 전송합니다. 클라이언트 단에서는 이런 HTTP 파일을 로드한 후 비디오를 재생시킬 수 있죠! 그럼 왜 HLS를 사용하느냐? 이에 대한 물음에는 HLS 장점 중 하나로 모든 인터넷 ..
-
Nib & Xib (feat. storyboard)iOS 2022. 12. 29. 10:20
안녕하세요. 그린입니다🍏 이번 포스팅에서는 Nib와 Xib에 대해 알아보겠습니다🙌 UI 구현 종류 우리가 iOS 개발을 하다보면 UI 즉, 화면을 그리는것은 빼놓을 수가 없습니다. iOS에서는 이 UI를 구현하는 방법에 대해 3가지를 이용할 수 있습니다. 1. 스토리보드로 구현하기 2. 코드로 구현하기 3. Nib, Xib로 구현하기 여기서 오늘 알아볼 것이 세번째 Nib, Xib로 구현하는것에 대해 알아보겠습니다🕺🏻 우선 그럼 Nib와 Xib의 정의부터 알아보시죠! Nib Nib는 Nextstep Interface Builder의 약자입니다. iOS / MacOS에서 애플리케이션의 유저 인터페이스를 저장하는 파일이죠. Nib는 UI를 그리는것에 있어서 바이너리 형식의 압축 파일을 이용해 필요한 클래스들..
-
removeArrangedSubview(_:) VS removeFromSuperview()iOS 2022. 11. 14. 17:59
안녕하세요. 그린입니다🍏 이번 포스팅에서는 오랜만에 UIKit을 다뤄볼까해요! 주제는 하위 구성된 뷰를 제거하는 방법으로 removeArrangedSubview(_:)와 removeFromSuperview()가 있습니다. 이 두 메서드를 알아보며 차이를 알아보겠습니다🙌 우선 그럼 removeArrangedSubview(_:)부터 알아보죠! removeArrangedSubview 배열된 상위 뷰의 스택 배열에서 파라미터로 넘어온 뷰를 제거합니다. func removeArrangedSubview(_ view: UIView) 선언은 위와 같이 해당 메서드에 상위 뷰로부터 제거할 하위 뷰를 인자로 넣어주면 됩니다. 해당 상위 뷰에서는 이제 더이상 제거되는 뷰의 위치 및 크기 등을 관리하지 않아요. 그렇지만 아예..
-
dSYM (feat. Firebase Crashlytics)iOS 2022. 8. 29. 16:11
안녕하세요. 그린입니다🍏 이번 포스팅에서는 dSYM에 대해 알아보고 Firbase Crashlytics에서 해당 앱의 비정상 종료되는 상황의 에러 리포트를 받을 수 있도록 dSYM 파일을 업로드 하는 방법에 대해 학습해보겠습니다🙌 dSYM? dSYM이란 debug symbol file의 약자입니다. dSYM 파일은 이름에서도 알 수 있듯이 해당 앱의 디버그 기호 및 정보를 저장합니다. 앱들은 간혹 런타임 에러가 날 경우가 있습니다. 즉 강제 종료가 되는것이고 이는 사용자에게 좋지 않은 사용 경험을 주는것이죠. 그렇기에 꼭 어떤 상황 및 빌드에서 어떤 에러가 나타나는지 배포되어 운영되는 앱에서는 꼭 이를 분석하여 개선시켜야 합니다. 이런 분석을 하기 위해서는 예를들어 파이어베이스의 crashlytics 같..
-
프로젝트 파일 구조 및 네이밍에 대해 (with. TCA & Coordinator 패턴)iOS 2022. 8. 20. 11:40
안녕하세요. 그린입니다🍏 이번 포스팅의 분량은 아주아주 짧습니다! 새로운 프로젝트를 진행하면서 모듈화된 프로젝트의 통일된 파일 구조를 잡아가고 네이밍에 대해 고민함에 있어 기준을 삼고 정해본걸 공유해볼까합니다🙌 프리뷰 우선 들어가기에 앞서 프로젝트의 큰 틀을 설명해봐야 이해가 쉬울것 같아요. 아키텍쳐로는 TCA(The Composable Architecture)를 사용하게 될 것이고 코디네이터 패턴을 적용하여 화면 전환을 담당해줍니다. TCA에 적합한 코디네이터 패턴 라이브러리인 TCACoordinators를 사용합니다. 해당 라이브러리를 몰라도 이번 포스팅은 전혀 전혀 문제가 되지 않습니다. 단지 코디네이터 패턴만 알고 계시면 됩니다! 그럼에도 혹시 이것이 뭔지 궁금하시다면 아래 포스팅을 참고해주세요🙏..
-
NSCache vs URLCacheiOS 2022. 8. 1. 10:25
안녕하세요. 그린입니다🟢 이번 포스팅에서는 오랜만에 간단한 주제인 NSCache와 URLCache의 차이를 알아보려고 합니다🙌 그럼 본론으로 바로 들어가시죠! 우선 둘다 Cache라는 개념에서는 동일할거에요. 그럼 Cache가 뭔지 간단히 살펴볼까요? Cache란? 캐시의 정의는 데이터나 값을 미리 복사해 놓는 임시 장소를 말합니다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우 혹은 값을 다시 계산하는 시간을 세이브 하고 싶은 경우에 사용됩니다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있습니다. 그럼으로 캐시는 시스템의 효율성을 위해 여러 분야에서 두루 쓰이고 있습니다. 이것이 캐시의 정의입니다. iOS에서 사용..
-
@main vs @UIApplicationMainiOS 2022. 7. 21. 09:32
안녕하세요. 그린입니다🟢 이번 포스팅에서는 @main과 @UIApplicationMain이 무엇인지 그리고 어떤 차이가 있는지 학습해보겠습니다🙌 swift 5.3 이전부터 Xcode를 통해 프로젝트를 만들어보시고 경험해보신분이라면 이 두 키워드에 대해 모두 보셨을거에요. 그럼 실제적으로 이 두 키워드는 어떤 친구고, 무슨 차이이며 어떤걸써야하는지에 대해서 정리해보겠습니다! @main 쉽게 말해 이 키워드는 프로그램의 진입점을 나타내줍니다. 어느 프로그램이던지 시작점 즉 Entry Point는 존재해야하죠. Swift에서는 @main을 통해 어디서부터 이 앱이 최초 실행되고 시작될지를 명시해주는 키워드입니다. 이 키워드는 Swift 5.3 이상(Xcode 12)부터 사용된 키워드로 바로 이어서 설명하겠지만..
-
UIKit에서 SwiftUI로 LifeCycle 변환하기iOS 2022. 7. 14. 09:07
안녕하세요. 그린입니다🟢 이번 포스팅에서는 아주 간단한걸 해보려합니다! 바로 UIKit 기반으로 만들어졌거나 사용되고 있는 앱을 SwiftUI 인터페이스 기반으로 바꿔보려고해요🙌 당연히 물론 처음에 프로젝트 생성 시 Interface 방식을 잘 고르면 상관없겠지만 알아두면 좋겠죠🕺🏻 Storyboard 기반 프로젝트 생성 우선 UIKit 기반으로 환경 셋팅을 하려면 프로젝트 생성 시 Storyboard로 인터페이스 설정을 해줘야합니다. 이러면 오늘 학습해볼 프로젝트가 생성됩니다. 저기서 아시겠지만 Interface는 Storyboard 그리고 SwiftUI 요 두개로 나눕니다. SwiftUI로 만들게 되면 스토리보드 파일이나 App/SceneDelegate 파일이 기본적으로 없으며 App 파일을 메인 시..