Total 45

iOS) NotificationCenter

Apple 공식 문서에 따르면 NotificationCenter란 등록된 observer에게 정보를 전송할 수 있게 해주는 notification(알림) 전송 방법이라고 한다. NotificationCenter는 Delegate Pattern과 함께 어플리케이션 내에서 객체가 서로 상호작용할 수 있는 방법 중 하나이다. NotificationCenter의 동작 방식 특정 객체가 NotificationCenter에 등록된 Event를 발생시키면, NotificationCennter에 등록된 Observer들 중 해당 Event를 담당 중인 Observer가 그 Event에 대한 행동을 취하는 것(#selector)이 NotificationCenter가 동작하는 방식이다. 어떻게 활용할 수 있을까? 동작방식..

iOS 2021.04.08

iOS) App Life Cycle

App Life Cycle이란 앱이 fore ground 또는 back ground에있을 때 시스템 알림에 응답하고 시스템이 발생시키는 Event에 의해 App의 상태가 전환되는 일련의 과정을 말한다. 참고: fore ground / back ground에 있을 때의 제약사항에 대한 이전 포스팅 App Life Cycle은 다음과 같이 총 다섯 가지의 상태로 이루어져 있다. 1. Not Running 앱이 아직 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태. 2-1. Fore ground-Inactive 앱이 실행중이지만 사용자로부터 event를 받을 수 없는 상태. multitasking window로 진입하거나 앱 실행중 알림 등에 의해 사용할 수 없게 되는 경우 이 상태로 진입. iOS 1..

iOS 2021.04.08

iOS) AppDelegate, SceneDelegate

iOS13부터 AppDelegate는 AppDelegate와 SceneDelegate로 분기되었다. 오늘은 분기된 이후의 각자 맡은 일과 동작방식 및 순서에 대해 알아보려고 한다. iOS13부터 AppDelegate가 하는 일? 이전에는 앱이 foreground에 들어가거나 background로 이동할 때 앱의 상태를 업데이트하는 등의 앱의 주요 생명 주기 이벤트를 관리했었지만 SceneDelegate로 위임되면서 현재 하는 일은 이하 5가지이다. 앱의 가장 중요한 데이터 구조를 초기화하는 것 앱의 scene을 환경설정(Configuration)하는 것 앱 밖에서 발생한 알림(배터리 부족, 다운로드 완료 등)에 대응하는 것 특정한 scenes, views, view controllers에 한정되지 않고 ..

iOS 2021.04.08

iOS) 앱이 foreground/background에 있을 때의 제약사항

foreground / background status? foreground 상태의 앱은 사용자가 보고 있는 화면이다. 그렇기 때문에 CPU를 비롯한 시스템 자원의 우선순위가 높은 상태! background 상태란 앱이 홈화면에 들어가서 사용자한테 보이지 않는 상태이다. 하지만 background에 진입했다는게 앱이 실행중이지 않다는 의미는 아니다! 음악 앱을 이용하여 노래를 듣는 경우처럼 다른 어플을 사용하더라도 멈추면 안되는 앱들의 경우처럼 앱이 background 상태가 되어도 계속 실행해야 될 때가 존재한다. App State(앱 상태) Not running: 앱이 아예 실행되지 않았거나 시스템에 의해 종료되었을 때의 상황 Inactive: 앱이 foreground 상태이기는 하나 이벤트를 받지 ..

iOS 2021.04.06

iOS) Bounds, Frame의 차이

필요한 사전 지식 CGPoint, CGSize, CGRect CGRect는 "사각형"으로 그려지며, origin과 size를 가진다. 즉, [x좌표, y좌표, width(너비), height(높이)]를 가진다. Bounds, Frame의 차이 //MARK: -frame //SupeView(상위뷰)의 좌표시스템 안에서 View의 위치와 크기를 나타냄 open var frame: CGRect //MARK: -bounds //View의 위치와 크기를 자신만의 좌표시스템 안에서 나타냄 open var bounds: CGRect frame SupeView(상위뷰)의 좌표시스템 안에서 View의 위치와 크기를 나타냄 log를 보면 하늘색 sub view의 frame은 (x:30, y:191) 이고, 보라색 sub ..

iOS 2021.04.06

Swift) 기초 문법 정리

네이버 부스트코스 iOS 기초 강좌를 수강하면서 개인적으로 정리한 Swift 기초 문법 입니다. Swift 기초 문법 정리 명명법, 콘솔 로그, 문자열 보간법 let(상수), var(변수) 기본 데이터 타입 Any, AnyObject, nil Array, Dictionary, Set(컬렉션 타입) 함수 기본 함수 고급 조건문(if-else, switch) 반복문 Optional Optional Binding(옵셔널 추출) struct(구조체) Class enum(열거형) 클래스 vs 구조체/열거형(상속 타입 vs 값 타입) Closure 기본 Closure 고급 Property Property 감시자 상속 인스턴스의 생성과 소멸 Optional Chaining과 nil 병합 연산자 Type Casting..

Language/Swift 2021.03.10

iOS) IBAction 내장된 Action들을 살펴보자

들어가며 회원가입 화면을 만들면서 비밀번호 입력부에 Secure Text Entry를 적용하였는데, 아래와 같이 눈 모양 버튼을 통해 Secure Text Entry를 해제하고 활성화시킬 수 있게 하는 것이 목표였다. 나는 Keep Pressed 되었을 때에만 입력된 비밀번호를 보여주고 터치가 해제되었을 때에는 다시 Dot으로 돌리고 싶었고 그래서 내장 Action들을 찾아서 해결하였다. 평소 모르던 Action들도 많았기 때문에 이참에 DId End On Exit부터 Value Change까지 15가지의 Action들을 살펴보고자 한다. 본론 Storyboard에서 IBAction(Interface Builder Action)을 만들려고 하면 나오는 왼쪽 화면 Touch Up Inside가 선택되어있는..

iOS 2021.03.07

CS) HTTP, HTTPS

HTTP? Hyper Text Transfer Protocol의 약어로써 W3(www) 상에서 서로 다른 시스템 간의 정보를 주고받을 수 있는 가장 기초적인 프로토콜이다. 우리가 웹 서핑을 할 때 서버에서 브라우저로 데이터 전송을 해 주는 용도로 가장 많이 사용된다. 이러한 HTTP는 인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜이기도 하다. 프로토콜: 복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약 HTTPS? HTTP에는 치명적인 문제점이 있었다. 이름에서 알 수 있듯 Text를 Transfer 하는 방식으로 통신을 하는데, 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않았기 때문에 보안상의 문제가 생겨났다. 그리하여 탄생..

Computer Science 2021.03.05

JavaScript 기초) JS에서 함수는 1급 객체이다

JavaScript에서 함수는 1급 객체(first class object)다. 1급 객체? 그게 뭐죠? 1급 객체(First Class Object) 1급 객체란 특정 언어에서 객체를 1급 시민으로써 취급한다는 뜻입니다. 조금 다르게 표현하면? "1급 시민 조건 + 객체 = 1급 객체" 1급 시민 : 1967년 Christopher Strachey가 수업에 사용한 노트에서 정의한 용어 일반적으로 1급 시민의 조건은 다음과 같습니다. 변수(variable)나 데이터 구조에 담을 수 있다 인자(parameter)로 전달할 수 있다 반환값(return value)으로 전달할 수 있다 1급 시민의 대표적인 예로 숫자를 들 수 있겠네요! 자 앞서 말했듯 1급 객체란 객체를 1급 시민으로 취급하고, 그렇기 때문에..

Language/JavaScript 2021.02.26

JavaScript 기초) var, let, const

ES6부터 let과 const가 추가됨에 따라, var가 유일한 변수 선언 방법이었던 JavaScript에는 총 세가지의 변수 선언 방식이 존재하게 되었습니다. 오늘은 이 세가지 변수 선언 방식에 대해 알아보겠습니다. 1. Scope Function-level scope var는 Function Scope에 해당됩니다. 대부분의 프로그래밍 언어는 Function Scope가 아닌 Block Scope에 해당합니다. 하지만 JavsScript의 경우 ES6전까지 Function Scope가 전부인 언어였으며 다음과 같은 코드 형식을 가졌습니다. //MARK: -Function Scope function scopeTest() { for(var i=0; i

Language/JavaScript 2021.02.25