오늘은 Remote Notification을 구현하면서 알게된 APNs에 대해 정리해 보려고 합니다. APNs ? Apple Push Notification service의 약자로, APN이라고도 부릅니다. 원격알림을 사용할 때 반드시 APNs를 거쳐야하며, 푸시 서버와 기기 사이의 중개자 역할을 합니다. 아래와 같이 말이죠. 아니 그냥 서버에서 알림 보내면 되지않나 왜 한단계 거쳐서 가는거지? 라고 생각을 했었는데 이유는 아래와 같습니다. APNs 의 역할 1. 알림 전달 (기기 전원 Off) 서버(Provider)에서 보낸 알림을 APNs에서 보관 → (기기 전원 On) APNs에서 보관하고 있던 알림을 기기로 전달. (기기 전원 Off) APNs에 알림이 많이 쌓여있는 상태 → (기기 전원 On) ..
타입 캐스팅은 인스턴스의 타입을 확인 하거나, 인스턴스를 같은 계층에 있는 다른 상위클래스나 하위클래스로 취급하는 방법입니다. 타입캐스팅에는 is 와 as 두 연산자를 사용하고, 타입 캐스팅을 사용하면 프로토콜을 따르는지도 확인할 수 있습니다. 타입캐스팅을 위한 클래스 계층구조 선언 (Defining a Class Hierarchy for Type Casting) 아래는 타입캐스팅 확인을 위해 만든 클래스 입니다. class MediaItem { var name: String init(name: String) { self.name = name } } 다음은 두 클래스 들은 MediaItem의 하위클래스 입니다. class Movie: MediaItem { var director: String init..
동시성 (Concurrency) Swift는 구조화된 방식으로 비동기 및 병렬 코드 작성을 지원합니다. 비동기 코드(asynchronous code) 는 일시정지되거나 재개 될 수 있지만, 한 번에 프로그램의 한 부분만 실행됩니다. 병렬 코드(parallel code) 는 여러 코드조각들을 동시에 실행하는것을 말합니다. 예를들어, 4개의 코어 프로세서를 가진 컴퓨터가 각 코어마다 하나의 task(코드)를 맡아, 동시에 4개의 코드조각을 실행 할 수 있습니다. 병렬 및 비동기 코드를 사용하는 프로그램은 한번에 여러 연산을 실시하며, 외부의 시스템을 기다리는 연산은 잠시 멈추고 메모리 안전한(memory-safe) 방식으로 작성하기 쉽게 만듭니다. 추가적인 스케줄링 유연함에서 병렬 또는 비동기식 코드에는 복..
컴퓨터 프로그래밍에서 복사 동작을 할 때, 수정이 일어날 경우 복사하는 작업을 합니다. Swift에선 Collection Type을 복사해서 사용할 때 일어납니다. var arr1 = [1,2,3] var arr2 = arr1 // 값 수정전까진 메모리주소가 같습니다. // arr1 메모리주소 0x600003e12de0 // arr2 메모리주소 0x600003e12de0 이때까진 arr1을 참조하고 있는 arr2의 메모리주소 값은 서로 같습니다. 하지만 아래와 같이 arr2를 수정한다면, arr2.append(4) // 값 수정 // arr1 메모리주소 0x600003e12de0 // arr2 메모리주소 0x600000808430
에러 처리 (Error Handling) Swift에서는 런터임 에러가 발생한 경우 Error 처리를 위해 아래의 일급 클래스(first-class)를 제공합니다. Error처리를 위한 일급 클래스 - Error 발생 (throwing) - Error 감지 (cathing) - Error 증식 (propagating) - Error 조작 (manipulating) 완전히 실행되는걸 보장할 수 없을 때, 옵셔널을 사용해 값이 없다는 것을 표시할 수 있지만 어떤 종류의 에러가 발생했는지 확인할 수 없습니다. 이럴때 에러 상황을 구분하여 개발자에게 알려준다면 프로그램 실행중 발생할 에러별로 적절하게 대응할 수 있을 겁니다. NOTE Swift에서 에러 처리는 Cocoa의 NSError 클래스와 상호 호환되는 ..
1. Version, Build 업데이트 Xcode > Project > General > Identity 부분의 Version, Build 업데이트 2. Archives를 위해 실기기로 변경 3. Archives 4. Distribute App Version 확인후 Distribute App 클릭 별다른 변경사항이 없으면 이후 쭉 Upload 라는 버튼이 나올때 까지 Next 버튼 클릭 5. Uploading 6. App Store Connect Xcode에서 적었던 Version을 그대로 작성 합니다. 7. 변경사항 수정 이 버전에서 업그레이드된 사항 부분에 내용을 추가하고 저장 후 심사에 등록 -> 제출 합니다.
프론트엔드 iOS 개발자라면 반드시 알아야할 LifeCycle (생명주기) 에 대해 공부해 보겠습니다. ViewController LifeCycle ViewController의 LifeCycle을 알아볼건데요. 각각의 ViewController 마다 생명주기를 가지고 있는데, 여기서 생명주기란 언제 생성되고, 언제 없어지는지를 말합니다. 먼저 생명주기가 어떻게 되는지 아래 그림으로 보시죠. loadView: 화면에 띄어질 View를 만드는 메소드입니다. 코드로직접 view를 만드는 경우를 제외 하곤 override하지 않는것이 좋습니다. (stroyboard, .nib파일) Outlet들과 Action들이 이 메소드에서 생성되고 연결 됩니다. viewDidLoad: ViewController가 메모리에 ..
Reactive Programming (이하 RP) 사용자의 액션에 의해 실시간으로 변하게 하는 *비동기적 데이터 흐름(Async Data Stream)을 이용한 프로그래밍 패러다임 입니다. 즉, 시스템에 이벤트가 발생했을 때 알아서 처리가 되는것. RP는 주변 환경과 끊임없이 상호작용하며, Push 방식으로 데이터의 변화가 발생한 곳에서 새로운 데이터를 사용자(Consumer)에게 전달 합니다. 패러다임: 한 시대의 사람들이 견해나 사고를 근본적으로 규정하고 있는 인식의 체계 예1) 배달 앱에서 여러사람의 메뉴를 주문시 메뉴갯수를 추가하게 되면 메뉴의 숫자가 페이지의 새로고침 없이 반영되는것처럼 특정 부분이 실시간으로 변하게 되는것을 말합니다. 예2 ) 핸드폰으로 동영상을 시청하고 있는데 세로로 보고있..
옵셔널 체이닝 (Optional Chaining) 옵셔널(optional)일 수 있는 인스턴스 내부의 프로퍼티, 메소드, 서브스크립트를 매번 nil 체크를 하지 않고 최종적으로 원하는 값 또는 nil 인지 판단하는 방법 입니다. 여러 쿼리들을 연결할 수 있으며, 링크중 하나라도 nil일 경우 최종값은 nil이 반환 됩니다. (참고링크) 강제 언래핑 대체용도의 옵셔널 체이닝 (Optional Chaining as an Alternative to Forced Unwrapping) 옵셔널 체이닝은 옵셔널 값 뒤에 물음표(?)를 붙여서 표현 합니다. 강제 언래핑할때 뒤에 느낌표(!)를 붙이는것과 문법이 비슷하지만, 가장 큰 차이점은 강제 언래핑을 할때 값이 없으면 런타임 에러가 발생하고, 옵셔널 체이닝을 사용하..
개념 TableView 하나의 열(column)에 배열된 행(row)을 사용해 데이터를 표시하는 뷰 UIScrollView 상속 받습니다. 목록(list)을 나타낼 때 주로 사용되며, 수직 스크롤만 가능합니다. 테이블 개별 항목을 구성하는 cell은 UITableViewCell 입니다. indexPath값을 통해 cell을 구분합니다. 섹션(section)을 이용해 행을 시각적으로 그룹화할 수 있습니다. 헤더(header)와 푸터(footer)를 이용해 추가 정보를 보여줄 수 있습니다. 장점 cell을 재사용할 수 있어, cell을 초기화 하는 부담을 줄일 수 있습니다. 메모리를 절약하여 많은 데이터를 효율적으로 표시할 수 있기 때문에, 단순 항목을 표시할 때 유용합니다. 단점 여러 디자인 요소를 추가하..
- Total
- Today
- Yesterday
- Swift init
- Swift final
- Swift joined()
- removeLast()
- RTCCameraVideoCapturer
- Swift RIBs
- ios
- Combine: Asynchronous Programming with Swift
- Swift 프로퍼티
- swift 고차함수
- Swift ModernRIBs
- swift programmers
- Swift Leetcode
- Swift joined
- 원티드 프리온보딩
- Swift
- swift reduce
- swift protocol
- Swift 프로그래머스
- Swift inout
- Class
- RIBs tutorial
- iOS error
- Swift 알고리즘
- Swift 내림차순
- 2023년 회고
- Swift Error Handling
- CS 네트워크
- swift property
- swift (programmers)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |