[iOS] Delegate Pattern에 대해서!
·
iOS
📌 위임(delegation) 클래스 또는 구조체가 자신의 책임 중 일부를 다른 유형의 인스턴스에 넘겨줄 수 있도록 하는 설계 패턴. 핵심 목적은 객체가 분리된 방식(의존성 감소)으로 소유자와 다시 통신할 수 있도록 하는 것! 객체 소유자의 구체적인 유형을 알 필요가 없으므로 재사용 및 유지관리가 훨씬 쉬운 코드를 작성할 수 있다! 나는 이벤트 받은 객체와 이벤트 처리하는 객체가 다른 경우, 두 객체가 소통하도록 델리게이트 패턴을 쓴다. 이를 통해 객체들의 역할과 책임을 나눠서 객체들은 서로 요청/응답만 하는 과정을 거치고, 의존성을 낮출 수 있도록 하는 것이라고 생각한다. 어떤 데이터를 사용자 이벤트로 입력받고, 그 값을 가지고 어떤 작업을 해야 하는데 이 작업은 나(class 객체)에서 하는 게 아니..
[iOS/UIKit] 코드베이스로 커스텀 객체 만들기! (Custom UIView)
·
iOS
요즘 코드베이스 iOS 앱 개발 공부를 하고 있는데, 커스텀 부분이 조금 헷갈렸다.. 그래서 이렇게 된거 기초를 빠삭하게 다시 해보자!라는 마음에 혼자서 열심히 해봤다.ㅎㅎ 혼자서 해보면서 많은 것을 배울 수 있었는데 그래서 더 iOS가 재미있고, 좋아졌다는! 기쁜소식ㅎ-ㅎ Overview ➡️ 동아리에서 당근마켓 클론코딩을 코드베이스(SnapKit)로 하고 있는데 평소 SwiftUI와 스토리보드만 할 줄 알아서 팀원분보다 실력이 너무 떨어지는 것을발견하고 코드베이스에 열과 성을 다해보기로 했다. 그러던 중 프로퍼티의 값이 변경되는 것을 알 수 있는 옵저버를 어떻게 하는지 감이 잘 안왔다.(이론을 알면 뭐하나 큼큼...) 그래서 한번 직접 처음부터 해보기로 마음 먹었다! 원하는 결과물! 버튼을 클릭하면 ..
[iOS/UIKit] 화면 전환에 대해 알아보자!
·
iOS
Overview 사실 화면 전환은 어느 정도할 줄 안다. 어떤 방식으로 행해지는 것도 아는데, 꼭 전환해야지! 하면 3가지 방법 중에 어떤 걸 써야 가장 좋은 방법일지 고민하게 된다. 그럼 예전에 정리했던 글을 보면서 아 이거였지.. 한다. 매번 이렇게 하자니 쓸데없이 시간 낭비하고, 아직 내가 너무 부족하다고 느꼈다. 이번 포스팅을 통해 마지막으로 화면 전환에 대해 정리해보고자 한다. 머릿속에 꼭꼭 새겨놓자! 화면 전환은 소스 코드 / 스토리보드 둘 중에 하나로 진행할 수 있다. 각각의 특징을 보자면 - 소스코드: 동적 화면 전환, 특정 상황에 대응할 수 있음 - 스토리보드: 정적 화면 전환, 일괄적 적용으로 간단 화면을 전환하는 방법 1. view controller에서 다른 view controll..
[iOS] View Life Cycle을 알아보자!
·
iOS
View Life Cycle 앱은 하나 이상의 뷰로 구성되어 있으며, 각각의 뷰들은 life cycle을 가지고 있다. View Controller의 생명주기는 scene 전환과 복귀와 밀접한 연관을 가지고 있다. 화면 전환 시, view controller 인스턴스 생성 및 소멸이 발생하기 때문이다. 앱을 처음으로 실행하거나 다른 scene으로 전환할 때, 인스턴스 새로 생성, 메모리 로드하고 이전 화면으로 복귀하면 생성된 인스턴스는 소멸되어 있다. 따라서 view의 life cycle을 고려해서 로직을 만들고, 구성해야 한다. view의 상태 4가지로 분류된다. Appearing View Controller가 스크린에 등장하기 시작한 순간부터 등장을 완료하기 직전까지의 상태 Appeared View ..
[iOS] App Life Cycle을 알아보자!
·
iOS
App Life Cycle 앱의 현재 상태는 현재 할 수 있는 것과 할 수 없는 것을 결정한다. 예를 들어, Foreground app은 사용자가 주목하고 있기 때문에 CPU와 같은 시스템 자원의 우선순위가 높다. 반대로 Background app의 경우, 앱이 화면에 나타나있지 않기 때문에 아무것도 하지 않거나 최대한 적은 일을 해야 한다. 기본적으로 3가지 실행 모드와 5가지의 상태, 항상 하나의 상태를 가진다. - Not Running 앱이 실행되지 않는 모드와 상태 (완전 종료, 동작 X) - Foreground 앱이 실행되는 모드 - Active 사용자 이벤트를 받아서 상호작용할 수 있는 상태 - Inactive 멀티태스킹 윈도우로 진입하거나 앱 실행 중 전화, 알림 등에 의해 앱을 사용할 수 ..
[iOS] AutoLayout 정복하기 - Constraints
·
iOS
AutoLayout을 통해 상대적인 값을 설정함으로써 다양한 디바이스의 해상도에 동일한 화면을 표현할 수 있다. 최고의 도구! 최고의 선배! 호우우우 🎉 AutoLayout을 구성하는 여러 기본 요소가 있는데, 그중에서도 constraints에 대해 알아보자. Index Constraint Add New Contraints Add New Alignment Constraints Mutilplier Priority Content Hugging Priority Content Compression Resistance Priority Constraints Priority Margin Constraint Add New Constraints 오브젝트의 Width, Height 설정 절대값 해당 오브젝트와 다른 오브젝..
[iOS/SwiftUI] MVVM에 대해 알아보자!
·
iOS
Stanford Lecture를 보고 이해한 내용을 나름대로 정리해 보았습니다. MVVM 구성 Model 앱의 데이터와 로직 관리 VM에게 데이터/상태를 알려준다 Model은 View와 연결되어있지 않다. (직접 소통 불가) UI로부터 독립적 (View와 소통불가한 이유, View == UI) single source of truth (오직 Model에만 저장) What the app is and does? View UI 로직이 VM에 있기 때문에 간결 사용자와의 상호작용을 통해 이벤트가 일어나면 VM에 알림 Model의 데이터, 상태를 반영해서 사용자에게 보여줌 Model의 데이터를 저장하지 않고, 일시적인 상태만 가지고 있음 업데이트된 데이터 값을 바탕으로 해당 데이터를 사용하는 View를 redra..
[SwiftUI] Layout (공부편)
·
iOS
Arrange views in app’s interface using layout tools that SwiftUI provides. Layout 프로토콜은 iOS 16과 함께 새롭게 등장한 view를 배치하는 기술. (WWDC22, 10056: Compose custom layouts with SwiftUI) 내가 만들어본 앱(Scrap)은 SwiftUI로 만들었는데, 스토리보드와 달리 view를 내 마음대로 옮기고 배치시킬 수 없다는게 조금 불편했다. 이번 기회에 배치에 대해서 공부하고 또 어떻게 구현되는지 알아보고 직접 만들어볼 것이다. 이번 포스팅은 공부편으로 Apple Developer Document를 사용해서 공부해봤다! overviews 뷰에는 subview(서브뷰)들을 넣어서 구성할 수 ..
[iOS] Native app과 Web view
·
iOS
Overviews 요즘 여러 iOS 관련 지식을 얻기 위해 콘퍼런스 영상과 블로그 영상을 열심히 찾아보고 있는데 오늘은 카카오 컨퍼런스인 if(kakao) dev “카카오페이 WebView에 관한 이슈와 리팩토링에 관한 발표” 영상을 봤다. 아직 취준생인 나에겐 어려운 내용이었는데 그래도 열심히 들으면서 정리했었다. 카카오페이는 Native와 WebView를 적절히 함께 사용해서 사용자의 경험을 높인다고 했다. 그런데 여기서 WebView는 대체 뭐지?라는 의문이 생겼다. 전혀 몰랐다..ㅋㅋㅋ 당연히 Native일줄! 찾아보니까 페이스북, 인스타그램, 트위터도 Webview를 사용한다고 한다! 와~~ 그러면 대체 Webview라는 게 뭘까?? 그리고 왜 WebView를 사용할까? browser와 뭐가 다..
녕이
'iOS' 카테고리의 글 목록