본문 바로가기
728x90

Swift19

MVVM패턴 MVVM패턴은 Model-View-View Model의 약자로 이뤄진 디자인 패턴이다. MVVM패턴의 핵심은 명령어의 흐름이 단방향이라는 것이다. 명령어는 View → ViewModel → Model 방향으로만 전달이 되며, 이 외의 방향으로 전달된다면 그것은 MVVM패턴을 제대로 구현하지 않은 것이다. 이 말은 MVVM패턴의 데이터의 흐름은 명령어 흐름의 반대인 Model → ViewModel → View 방향인 것이다. Model 그저 데이터의 구조만 있으면 된다. 비즈니스 로직은 API통신이 있어서는 안된다. (모델 그 자체로서만 존재해야한다.) View UI에 대해서만 있어야한다. UI를 그리는 일과 사용자의 입력을 받아내는 곳이다. ViewModel UIKit 또는 SwiftUI를 import .. 2022. 11. 11.
클래스와 구조체의 공통점, 차이점 클래스와 구조체의 공통점 - 값을 저장할 속성(property)을 선언할 수 있다. - 함수적 기능을 하는 메서드를 선언할 수 있다. - 내부 값에.(점)을 사용하여 접근할 수 있다. - 메모리에 찍어낸 것을 인스턴스(instance)라고 한다. (인스턴스란? 실제로 메모리에 할당되어 구체적 실체를 갖춘 것을 말한다.) - 생성자를 사용해 초기상태를 설정할 수 있다. - 확장(extension)을 사용하여 기능(메서드)을 확장할 수 있다. - 프로토콜(protocol)을 채택하여 기능을 설정할 수 있다. - 인스턴스 내부에 함수의 정의문은 올 수 있지만 실행문은 올 수 없다. (정의문 내부에는 실행문이 올 수 있다.) 클래스와 구조체의 차이점 이 둘의 가장큰 차이점은 바로, 메모리 저장방식의 차이다. 클.. 2022. 11. 9.
메모리구조 메모리 구조에는 코드 - 데이터 - 힙 - 스택 이렇게 4가지의 영역이 있다. 코드 코드(프로그램)는 명령어 / 프로그램의 영역으로 앱(프로그램)의 모든 코드를 의미한다. (읽기 전용 - getOnly) 데이터 데이터는 전역 변수 / 타입(static) 변수의 영역으로 공통으로 공유하기 위한 데이터이므로 한번 데이터 영역에 올라가면 앱이 실행되는 동안 불변한다. 힙 힙(Heap)은 동적할당(일반적으로 오랫동안 긴 시간 동안 저장)의 영역으로 크기가 크고, 관리할 필요가 있는 데이터이기 때문에 개발자가 잘 관리해야한다. 힙 영역에 할당되는 데이터는 관리를 해야지만 메모리에서 해제된다. 해제되지 않으면 메모리 누수(Memory Leak) 현상이 발생한다. 메모리 누수(Memory Leak) 현상이란? 힙에 .. 2022. 11. 9.
웹뷰 구현하기(WebView) - UIKit WebView란? 프레임워크에 내장된 웹 브라우저 컴포넌트로 뷰(View)의 형태로 앱에 임베딩하는 것을 말한다. 쉽게 말해서, App에서 웹브라우저를 이용해 화면을 보여주는 방식을 뜻한다. 웹뷰의 구현방식 3가지 (기존의 UIWebView는 ios2.0에 출시 되었기 때문에 성능적인 측면에서 너무 부족하다. 그렇기 때문에 사용하지 않는 것을 추천한다.) 1. WKWebView ios 8.0에 출시 되어 현재 가장많이 사용되고 있는 방식이다. 가장 큰 장점은 웹페이지에서 할당하는 메모리는 앱과 별도의 스레드에서 관리하는 것이다. 즉, 웹페이지의 메모리가 아무리 크더라도 앱에는 영향이 없다는 뜻이다. 2. SFSafariView ios 9.0에 출시되었고 safari를 이용하는 웹뷰이다. WkWebview.. 2022. 11. 6.
클로저(Closure)란? 클로저(Closure)란? 이름이 없는 함수 (== 익명 함수) 이다. 클로저와 함수는 기능은 완전히 동일하지만, 형태가 다르다. 함수: 이름이 있는 코드 묶음 -> 다른코드가 함수이름으로 호출하기 위해서 클로저: 이름이 없는 코드 묶음 -> 굳이 이름이 없어도 호출할 수 있는 형태로 사용가능 함수의 기본형태 func customFunc() -> String { return ... } 클로저의 기본형태 { () -> String in return ... } Swift에서 이런형태( {중괄호}의 형태 )를 본다면 클로저를 먼저 떠올리자! Swift는 함수를 일급객체로 취급한다. 이 말은 함수는 타입이다! 라는 뜻이다. 함수가 타입인 이유는? 1. 함수를 변수에 할당할 수 있다. 2. 함수를 호출할 때, 함.. 2022. 11. 6.
컬렉션타입 - Copy_On_Write 최적화개념 Copy_On_Write 최적화란? 코드상에서 값을 복사해서 담는다 하더라도, 실제 값이 바뀌기 전까지는 그냥 하나의 메모리 값을 공유해서 사용한다는 개념이다. (메모리를 적게 차지하기 위해 Swift가 알아서 내부에서 처리하는 메커니즘이다.) 글로만 적으면 이해하기가 힘드니 예시로 들면 var array = [1, 2, 3, 4, 5] var newArray = array[0...2] 이렇게 있을 경우 newArray의 새로운 메모리 공간을 만드는 것이 아닌 Swift가 알아서 array의 주소만을 가리키게 해서 사용한다는 개념이다. 2022. 11. 5.
728x90