iOS 개발자가 알아야할 네트워크 관련 개념 정리: TCP/IP, HTTPS, URLSession
·
iOS
1. 네트워크 프로토콜네트워크 통신은 여러 계층의 프로토콜이 협력하여 이루어진다. 주요 모델로 OSI 7계층 모델과 TCP/IP 모델이 있다.OSI 7계층물리 계층: 전기 신호, 광 신호 등의 물리적 전송 담당데이터 링크 계층: 오류 감지 및 수정, MAC 주소 기반 통신네트워크 계층: IP 주소를 사용하여 경로 설정 (예: IP)전송 계층: 데이터의 신뢰성 있는 전송 보장 (예: TCP, UDP)세션 계층: 세션 설정, 관리, 종료프레젠테이션 계층: 데이터 표현 형식 변환 (예: 암호화)응용 계층: 사용자와 직접 상호작용 (예: HTTP, FTP)TCP/IP 모델응용 계층 (HTTP, FTP, DNS)전송 계층 (TCP, UDP)인터넷 계층 (IP)네트워크 액세스 계층 (이더넷, Wi-Fi)2. SSL..
컴퓨터 시스템과 iOS 개발의 기초 개념
·
iOS
효율적인 개발과 문제 해결에 필수적인 CS 기초 개념을 정리해본다.CPU, RAM, 저장 장치의 상호작용부터 iOS의 메모리 관리 및 멀티스레딩 기술까지, 각 요소의 원리를 숙지함으로써 더 나은 성능과 안정성을 갖춘 앱을 개발할 수 있다. 1.  컴퓨터 시스템의 주요 구성 요소컴퓨터 시스템은 CPU, RAM, 저장 장치로 구성된다. 각 구성 요소는 서로 협력하여 데이터를 처리하고 저장한다.CPU (Central Processing Unit)컴퓨터의 핵심 연산 장치로, 명령어를 처리하고 산술 및 논리 연산을 수행한다.데이터 처리를 담당하며 RAM에서 데이터를 가져와 연산 후 결과를 저장한다.RAM (Random Access Memory)현재 실행 중인 데이터와 프로그램을 임시 저장하는 휘발성 메모리이다.C..
Design Patterns: MVVM, MVVM-C, MVP, Clean Architecture
·
iOS/Swift
디자인 패턴은 앱의 규모와 요구사항에 따라 선택할 수 있으며, 단순한 앱에서는 MVP나 MVVM, 복잡한 네비게이션이 포함된 앱에서는 MVVM-C를 선호할 수 있다. 유지 보수를 위해 가독성이 좋고 의존성을 줄이고자 사용하는 것이기 때문에 누구나 알기 쉽게 작성하는 데 중점을 두어야 하고, 디자인 패턴을 위해 코드가 복잡해지는 것은 바람직하지 않다.참고로 Apple에서 권장하는 디자인패턴은 Swift는 MVC, SwiftUI는 MVVM이라고 한다.  1. MVP (Model-View-Presenter)Model, View, Presenter로 구성된 디자인 패턴으로, View와 Model을 분리하여 코드의 유지보수성을 높이는 구조이다.Model: 애플리케이션의 비즈니스 로직과 데이터 관리 부분을 담당한다..
iOS 앱 개발자를 위한 RESTful API 실전 적용과 WebSocket
·
iOS/Swift
1. RESTful API 설계와 특징RESTful API는 서버와 클라이언트 간의 통신을 효율적으로 설계하기 위해 널리 사용되는 방식이다.RESTful API 설계의 주요 원칙리소스를 나타내는 명사형 URI:GET /users: 유저 목록 읽기POST /users: 새로운 유저 생성Stateless 통신:클라이언트는 매 요청 시 필요한 모든 정보를 포함하여 서버에 전달한다. 서버는 이전 요청 상태를 기억하지 않는다.RESTful하지 않은 API 란모든 요청을 POST로 처리URI에 리소스 대신 동작을 나타내는 동사가 포함된 경우 (예: /students/update)2. RESTful API를 위한 서버 - 클라이언트 협업앱 개발에서 가장 기본이 되는 RESTful API는 화면의 데이터 제공이다. 특..
RxSwift vs URLSession 이미지 다운로드 비교
·
iOS/RxSwift
RxSwift와 조금 더 친해지기 위해 기존 코드를 RxSwift를 이용한 코드로 변경해보는 간단한 예제를 실습해보았다. 1. Storyboard 에 다음과 같이 UIImageView와 버튼들을 Constraint와 함께 추가한다. 2. Cocoapods 필수! Podfile에 RxSwift 라이브러리를 추가한 후 install 한다. ///Podfile pod "RxSwift" 3. 메인 ViewController 상단에 import를 추가한다. ///ViewController.swift import RxSwift 4. 상단에 IBOutlet을 연결하고 url 주소를 선언한다. 다운로드받을 이미지는 구글 검색에서 찾은 1920X1080 크기의 배경화면 이미지이다. ///ViewController.swi..
ReactiveX 사이트 방문해보기
·
iOS/RxSwift
reactivex.io ReactiveX CROSS-PLATFORM Available for idiomatic Java, Scala, C#, C++, Clojure, JavaScript, Python, Groovy, JRuby, and others reactivex.io RxSwift를 공부하기 위해서 ReactiveX 사이트를 방문해보았다. RxSwift는 Microsoft사의 ReactiveX의 시리즈 중 하나이고 "An API for asynchronous programming with observable streams(Observable 스트림을 이용한 비동기 프로그래밍 API)"라는 한 줄 요약으로 설명하고 있었다. 홈페이지 상단의 Introduction 버튼을 클릭하면 Reactive X에 대..
Swift) 값 타입과 참조 타입 그리고 클래스와 구조체 (Value type & Reference type, Class & Struct)
·
iOS/Swift
값 타입과 참조 타입 값 타입 변수를 할당하면 스택 영역에 값이 저장된다. 변수를 복사한 후 복사본을 변경하더라도 원본에 영향을 주지 않는다. 힙 영역을 사용하지 않고 레퍼런스 카운팅이 필요하지 않다. 참조 타입 스택 영역에는 포인터(레퍼런스)만 할당되고 실제 데이터는 힙 영역에서 할당된다. 변수를 복사하더라도 하나의 값을 가리키고 있기 때문에 복사본과 원본이 모두 같은 값을 갖는다. 변수를 복사하더라도 레퍼런스 카운트만 +1되고 실제 값이 복사되지는 않는다. Swift의 Class와 Struct는 생김새와 사용법이 유사하다. 구조체는 1. 값 타입이다. 2. 상속이 불가능하다. 3. 생성자를 구현하지 않아도 default initializer를 사용할 수 있다. struct Car { var name ..
Swift 앱의 생명주기와 헷갈리는 UI 관련 개념 정리
·
iOS/Swift
* 생명주기 1. ViewController 생명 주기 2. App 생명 주기 3. Scene 생명 주기 * UI 관련 개념 1. UIWindow - The backdrop for your app’s user interface and the object that dispatches events to your views. - UIView를 상속받은 객체로 유저 인터페이스의 배경으로서 UIView들에게 이벤트(터치, 드래그 등)를 전달하는 역할을 한다. 2. Frame과 Bounds - 두 가지 모두 UIView의 위치와 크기를 가진 프로퍼티이다. - 두 가지 모두 CGRect형으로 나타난다. - Frame은 SuperView내에서의 절대적인 위치 좌표를 가지고 Bounds는 상대적인 위치 좌표를 갖는다. ..
Swift 중요한 용어와 개념
·
iOS/Swift
프로그래밍 언어 공통 1. 라이브러리와 프레임워크 - 라이브러리는 재사용이 가능하도록 미리 만들어둔 최소 기능 단위이다. 보통 라이브러리는 API를 제공한다. 크게 표준 라이브러리와 사용자 라이브러리가 있는데 표준 라이브러리는 언어에서 제공해주는 것(ex. printf 함수)이고 사용자 라이브러리는 보통 표준 라이브러리를 이용하여 만들어진다. - 프레임워크란 라이브러리들과 또다른 프레임워크들을 모두 포함한다. 자바를 편하게 쓸 수 있도록 만든 스프링, 파이썬을 편하게 쓸 수 있도록 만든 장고 등을 예로 들 수 있다. - 라이브러리와 프레임워크 모두 편리하고 개발시간을 단축시키는데 도움이 되며, 재사용이 가능하다는 장점이 있다. 또 여러 사람이 사용하기 때문에 대부분 신뢰할 수 있다. - 라이브러리의 경우..
Swift 클로저와 일급 함수
·
iOS/Swift
일급 시민(함수 or 객체) 1. 변수나 데이터 구조(컬렉션) 안에 담을 수 있다. 2. 파라미터로 전달할 수 있다. 3. 리턴값으로 사용할 수 있다. Swift 클로저 let add: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let res: Int = add(1, 2) print(res) // 3 swift의 함수는 일급함수가 아니다. swift의 클로저는 일급함수이다. 함수가 일급함수인 경우 : javascript, kotlin, python .. javascript는 함수를 변수 안에 담고, 리턴값으로 사용할 수 있다. function calculator(mode){ var options = { '+' : function(left, rig..