본문 바로가기

iOS/Swift22

[iOS] RootViewController 변경하는법과 이유 안녕하세요 안녕주입니다! 오늘은 RootViewController를 변경하는 법과 이유에 대해 기록해 보려고 합니다. 먼저 RootViewController를 변경하는 이유는 아래와 같습니다. 로그인을 먼저하고 나서 메인화면으로 가는 플로우가 있다고 생각해봅시다! 아래의 마지막 뷰에서 다음버튼을 누르면 메인 화면으로 이동하는 데요 메인화면에서 다시 로그인을 하고싶어져서 로그인 화면으로 갔다가 다시 로그인하고 메인화면으로 가고... 그리고 이 과정을 여러번 반복하면 어떻게 될까요? 뷰 컨트롤러의 스택이 엄청 쌓이겠죠..? (로그인화면 - 완료 화면 - 메인 화면 - 로그인 화면 - 완료 화면 - 메인 화면 - 로그인 화면 - 완료 화면 - 메인 화면..) 로그인 - 회원가입 화면 흐름에서 메인화면으로 전환.. 2022. 4. 16.
[iOS] 화면 전환 방식 push vs present 안녕하세요 안녕주입니다 :) 오늘은 push 랑 present의 차이를 중심으로 화면 전환 방식에 대한 기록을 남기겠습니다! UIViewController 특징 사용자의 이목을 끌기 위한 화면 전환 기법 화면을 다른 화면 위로 띄워 표현하는 방식 흐름을 이어지는 컨텐츠를 담기 보다는 흐름을 끓고 눈에 보여줘야하는 콘텐츠를 담는데 사용 UIViewController 클래스를 상속받은 클래스에서의 화면전화 방법 X 버튼이 주로 있음 (1) present : 뷰 이동 뷰 전환 방식 : 세로방향 (아래에서 위) modalPresentationStyle로 화면 전환이 되는 스타일을 정할 수 있음 present(_:animated:completion:) Presents a view controller modally.. 2022. 4. 15.
[iOS] Any, AnyObject, nil 뿅! 안녕하세여 안녕주입니다... 요즘 야곰님의 [스위프트 프로그래밍] 책을 통해 기초를 다지고 있답니다. 중요한 키워드나 새로 알게된 개념들을 기록 하려고 해요! 오늘은 Any, AnyObject, nil에 대해 이야기 해보겠습니다... 1. Any Any는 스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻입니다. 변수나 상수의 타입이 Any라면 어떤 종류의 데이터 타입이든지 상관 없이! 할당할 수 있습니다. 2. AnyObject AnyObject는 Any보다는 한정된, 클래스의 인스턴스만 할당할 수있습니다. var someVar: Any = "yagom"//문자열도 someVar = 50//정수도 somVar = 100.1//실수도 할당 가능 Any나 AnyObject는 될수 있으면 쓰지 않는 것.. 2022. 3. 7.
[iOS] ARC ARC가 관리해주는 참조 횟수 계산은 참조 타입인 클래스의 인스턴스에만 적용됩니다. 구조체나 열거형은 값 타입이므로 참조 횟수 계산과 무관합니다. 즉, 구조체나열걸형은 다른 곳에서 참조하지 않기 때문에 ARC로 관리할 필요가 없습니다. ARC란 ARC( Automatic Reference Counting)는 자동으로 메모리를 관리해주는 방식입니다. 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작합니다. ARC와 자바의 메모리 관리 기법인 가비지 컬렉션기법과는 어떤 차이가 있을까요? 메모리 관리 기법 ARC 가비지 컬렉션 장점 - 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 인스턴스가 언제 메모리에서 해제될지 예측할 수 있습니다. - 컴파일 당시 이미 인스턴스의 해제 .. 2022. 2. 20.
[iOS] SOLID 원칙 in Swift SOLID (객체 지향 설계) SOLID란? 객체 지향 프로그래밍 및 설계의 다섯가지 기본 원칙입니다. SOLID 원칙을 지킴으로써 유지보수가 쉽고, 유연하고, 확장이 쉬운 소프트웨어를 만들 수 있습니다. 약어 개념 S SRP 단일 책임 원칙(Single Responsibility Principle) : 한 클래스는 하나의 책임만 가져야 한다. O OCP 개방-폐쇄 원칙(Open/Closed Principle) : 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야한다. L LSP 리스코프 치환 원칙(Liskov Substitution Principle) : 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야한다. I ISP 인터페이스 분리 원칙(Inte.. 2022. 2. 19.
[iOS] 의존성 주입 DI 의존성 주입 (Dependent Injection) 의존성 주입은 외부에서 초기화해서 클래스 안에 할당해주는 것입니다. 의존성 주입을 할 경우 아래와같은 효과를 기대할 수 있습니다. 재사용성이 높아짐 테스트 용이 코드 단순화 결합도는 낮추면서 유연성과 확장성 향상 1. 의존성은 어떤한 클래스에서 다른 클래스를 사용하면 의존성이 생깁니다. //그냥 평범한 클래스 class Mobile { var name = "아이폰14" } //Mobile과 의존관계가 있는 클래스, Phone은 Mobile에 의존관계가 생깁니다. class Phone{ var phone = Mobile() } let Apple = Phone() print(Apple.phone.name) 2. 주입은 값을 초기화할때 값을 주입합니다. 내부.. 2022. 2. 19.