일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바스크립트 자료구조
- 비동기
- data structure
- 힛잇
- 리액트
- 호키스
- 리액트 예제
- IOS
- 계명대
- queue
- 호키도키
- javascript
- hokeys
- hokidoki
- 스위프트
- Svelte
- 개발자
- 계명대 이종호
- react
- 자바스크립트
- 개발
- 이종호
- TDD
- Hitit
- HTML
- 자료구조
- 자스민
- SWIFT
- 스벨트
- jest
- Today
- Total
목록IOS (10)
Dog foot print
비동기와 동시의 차이 학생들과 이야기 해보면 비동기 와 동시 의 의미를 헷갈리는 경우가 종종 존재한다. Serial 과 Concurrent를 설명하기 전에 집고 넘어가도록 하자. 비동기는 말그대로 어떤 작업을 기다리지 않는다라는 의미이며, 동시라는 의미는 같은 시간에 어떤 작업이 말 그래도 동시에 일어 날 수 있는 것을 의미한다. Serial Queue SerialQueue는 순서가 중요한 작업들을 처리할 때 사용 되는 큐이다. 아래의 코드를 보도록 하자. let queue = DispatchQueue(label : "serial") queue.async{ sleep(3); print("1") } queue.async{ sleep(2); print("2") } queue.async{ sleep(1); p..
Async 비동기 Async는 어떤 작업이 끝나기를 기다리지 않고, 다음 작업이 실행되는 것을 의미한다. 아래의 코드를 보도록 하자 . import Foundation print("1") DispatchQueue.global().async(){ print("2") } print("3") 위의 코드는 순차적으로 실행되지 않는다. 이것을 그림으로 보면 다음과 같다. DispatchQueue.global().async 의 코드 역할은 블락에 있는 코드를 전달하는 것으로 이 코드의 역할은 마무리 된다. 그러므로 2번째 프린트 문을 기다리지 않고 print(3)이 출력된다. Sync 동기 Sync는 작업을 다른쓰레드에 시키고 그 일이 종료될 때 까지 기다린다는 의미이다. 아래의 코드를 보자 print("1") D..
쓰레드란 무엇인가 ? 쓰레드를 쉽게 이해하기위해서는 내 Application에서 동작하는 일꾼 이라고 생각 할 수 있다. 우리의 어플리케이션이 동작 할 때도 이런 쓰레드에게 일을 맡겨야 하는데, 우리가 만약 별도의 쓰레드에게 일을 맡기지 않는다면 메인 쓰레드 에서 일을 모두 하게 된다. 쓰레드를 생성하고 삭제하는 일을 꽤나 고난이도의 일이다. 그렇기에 IOS에서는 친절하게도 쓰레드를 생성하거나 삭제하는 일을 대신 해주고 우리는 별도의 쓰레드에게 일을 시키기만 하면 된다. 별도의 쓰레드에게 일을 시키는 이유 이런 의문이 들 수 있다. 현재까지 쓰레드를 나누지 않고, 잘만 사용 되던데요. 굳이 다른 쓰레드에게 일을 시키는 상황이 있을까요 ? 합리적인 질문이다. 우리의 IOS CPU의 성능은 정말이지 엄청나다..
[IOS] 동기적 작업과 비동기적 작업 동기적 작업 동기적 작업은 어떤 일련의 작업들이 순서를 기다리며 이전에 할 일이 끝나면 자신의 일을 하는 것을 의미 한다. 다음의 그림을 보며 이해하도록 하자. 위의 그림을 보면 손님은 여러명인데, 직원은 한 명이다. 이 경우 직원은 한명의 손님의 주문을 처리하기 위해 다음과 같은 절차를 가진다. 손님에게 주문을 받는다. 주문을 처리하기 위해 음식물을 제조한다. 음식물을 손님에게 전달한다. 다시 1로 이동 위와 같이 어떤 작업 실행이 순차적으로 진행 되는 것을 동기적 작업이라고 한다. 비동기적 작업 비동기적 작업은 작업의 순서 상관없이 발생하는 작업을 의미 한다. 아래의 그림을 보며 이해하도록 하자. 위의 그림도 동기적 작업 그림과 동일하지만 , 알람이 존재한다. ..
Protocol 애플의 진영에서는 인터페이스라는 것이 존재하지 않고, 프로토콜이라는 것이 존재한다. 어찌 보면 규약이라는 개념은 비슷하지만 그 규칙의 강제성이나, 제한은 인터페이스가 훨씬 높다. 즉 프로토콜이라는 개념은 최소한의 만족할 만한 규칙 이며, 인터페이스는 부가적인 것이 존재하지 않는 규칙으로 정리 할 수 있다. 프로토콜은 명세라고 불리우기도 하는데, 이는 특정한 것을 만들기 위한 설계서와 같은 역할을 한다. 이 프로토콜이라는 규칙을 준수하며 객체나 구조체, 열거형을 만드는 것을 프로토콜을 구현한다라고 표현 한다. 프로토콜의 구현 protocol [프로토콜 명]{ 프로토콜 명세 ... } class A : [protocol] { } extension A : [protocol] { } enum B..
함수란 ? 독립적으로 실행 가능한 코드이다. 함수 정의 템플릿 func 함수이름 (매개변수명1 : 타입, 매개변수명2 : 타입) -> 반환 타입 { 실행내용 return 반환값 } 예시 코드 func sum(x : Int, y : Int) -> Int{ print("매개변수1 \(x) , 매개변수2 \(y)"); return x + y; } Note : 매개변수가 존재하지 않는다면 작성하지 않아도 된다. Note : return 하는 값이 존재하지 않다면, void 타입을 명시해주지 않아도 된다. 함수 식별자 func sum(x : Int, y : Int) -> Int{ print("매개변수1 \(x) , 매개변수2 \(y)"); print("매개변수명 x,y") return x + y; } func s..
Dictionary란 key와 값이 쌍으로 이루어진 집단 자료형이다. // [키 : 값] let countries = ["korea" : "seoul"]딕셔너리 제약 하나의 키는 하나의 데이터에만 연결되어야 한다. 하나의 딕셔너리에서 키는 중복될 수 없고, 만약 이를 중복으로 처리하면 해당 키의 값이 재 할당된다. any 타입을 이용해서, value 와 key의 타입 제한을 없앨 수 있지만 다른 이를 위해 값은 항상 같은 타입의 데이터가 할당 되어야 한다. 딕셔너리는 아이템의 순서를 보장해주지 않는다. 즉 늦게 할당한 A가 B보다 뒤에 있으리라는 보장이 없다. Key는 타입 제한이 없지만, 해당 클래스가 Hashable 프로토콜을 구현해야 한다. 딕셔너리 선언과 초기화 let d_1 = ["hi" : "..
문자열 보간법 문자열 보간법은 문자열 사이에 문자열이 아니거나 문자열인 자료형을 넣어, 동적으로 문자열을 만들어주는 방법을 의미합니다. 먼저 스위프트 보간법을 보기 전에 문자열 을 합치는 방법에 대해서 먼저 보도록 하겠습니다. 문자열과 문자열 1> let hello = "hello" 2> let world = "world" print(hello+" "+world) // hello world 출력 문자열과 문자열을 합치는 가장 고전적인 방법은 더하기 연산자를 통해, 문자열 타입을 합쳐주는 것이다. 문자열과 비문자열 let name = "lee" let age = 28 print(name+" is "+String(age)+" years old" 문자열과 비문자열을 합치기 위해서는 비문자열을 String으로 ..