IOS application 46

3. Concurrency (동시성)

Concurrency (동시성) 한번에 여러개 수행!! App이 한번에 여러가지 일을 수행해야하는데 어떤 일을 하는지 살펴보자 작업번호 사용자 인터랙션(User Interaction 상호작용) 처리 네트워킹 백그라운드에서 파일 다운로드 파일 저장하고 읽기 네트워킹으로 인해 사용자 인터랙션을 못하거나 다른 것이 동작하지 않는다면 앱은 느려지고 아무도 사용하지 않게 될 것이다. 그렇기에 Concurrency는 반드시 필요한 작업이다. 컴퓨터 공학에서는 이러한 작업을 Thread 라고 한다. 우리의 폰, 컴퓨터 입장에서는 Thread 1, 2, 3, 4 모두가 동시에 처리 되어야 한다는 것이다. 그렇기에 context switching을 통해 왔다리 갔다리 하면서 Thread를 동작시킨다. 너무 빨라서 동시에..

2. 네트워킹 하는 것을 확인할 수 있는 툴

네트워킹 하는 것을 확인할 수 있는 툴 : Postman Postman: 네트워킹 하는 것을 확인할 수 있는 툴 https://www.postman.com/downloads/ Download Postman | Try Postman for Free Try Postman for free! Join 13 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com 구글의 document를 응답받은 것이다. 실제 코드를 보여주기 위해 렌더링을 시켜준것이 위의 사진이다. 렌더링(rendering): 렌더링 또는 이미지 합성은 컴퓨터 프로그램을..

1. 네트워킹에 필요한 기초지식

네트워킹에 필요한 기조지식 네트워킹이란 서버와 앱 간의 데이터를 주고 받는 것이다. 어떻게 주고받을까? HTTP라는 방법으로 RESTAPI를 이용해서 JSON데이터를 주고받는다. HTTP는 우리가 쓰는 웹 브라우져 주소 좌측에 보이는 글자가 있는데 본적이 있는가? 이것은 서버에서 데이터를 받을 때 HTTP방법을 이용하자고 전세계에서 약속한 것이다. 이렇게 약속한 방법을 통해서 RESTAPI를 서버에서 구성해서 JSON 데이터 파일을 받게된다. JSON 데이터 파일은 전세계에서 약속한 것은 아니지만, 대부분의 회사에서 사용하고 있는 데이터 타입이다. HTTP 기초 HTTP: HyperText Transfer Protocol HTTP는 클라이언트(웹 브라우져, 모바일 앱)과 서버 간의 데이터를 어떻게 주고받..

0. Networking

네트워킹 넷플릭스 애플뮤직 페이스북 언제 네트워킹이 필요할까?? 컨텐츠의 경우에는 암호화와 워터마킹이 된 영상이 내려온다. 그래서 영상유출시 누가 했는지 다 알 수 있다. 이런 앱들이 Networking이 안된다면? 이 앱 모두 정상작동을 하지 못한다. 데이터의 전달이 되지 않으면 안되니깐!! Networking + IOS 우리는 IOS에서 Networking 작업을 어떻게 할 수 있을까? —> URLSession IOS에서는 URLSession class를 통해서 네트워크 작업을 할 수 있다. 이론 네트워킹이라는 작업은 상당히 느린 작업이다. 네트워크보다 빠른 작업은 메모리 접근, 디스크 파일 읽기 등. 이것보다 네트워킹은 상당히 느린 작업이다. 앱에서는 앱의 반응성이 상당히 중요하다. 반응이 느리면 ..

5. AVMetadataItem

우리는 AVPlayerItem의 데이터를 관리하다가 AVMetadataItem 타입을 알게 되었다. 이것이 무엇이고 어떻게 사용하는지를 살펴보자 우리는 AVPlayerItem type를 갖는 데이터들의 array에서 특정 index를 인자로 주면 Track type로 반환하는 함수를 만들었다. 그런데 기존의 파일은 AVPlayerItem이기에 우리는 extention 키워드를 사용해서 convertToTrack() 라는 메소드를 만들어 사용했다. AVPlayerItem.convertToTrack() 우선 AVPlayerItem 안에는 asset라는 property가 존재하는데, 이 asset property안에는 metadata라는 것이 존재한다. 우리가 곡이라는 파일이 있을 때, 우리들이 현재 듣고 있..

4. Design Patton: MVVM 패턴

Design Patton: MVVM 목차 1. 개발의 Design Patton? 2. MVC 패턴: Model - View - Controller (디자인 패턴의 근본) 3. MVVM 패턴 1. 개발의 Design Patton? Patton은 보통 어떤 일이나 목적을 효율적으로 달성하기 위한 체계 이전의 개발은 개발의 패턴이 없어 유지보수와 관리가 힘들었다. 그래서 특정 패턴을 만들어 유지보수와 관리가 쉽게 하였다. 그것이 우리가 알고있는 MVC, MVVM 같은 패턴이다. 디자인 패턴의 목표 기술부채의 최소화 재사용 및 지속 가능 위에는 추상적이고, 구체적인 코드 구조에 대한 전략을 짜는 것이 목표겠지. 클린 아키텍처 디자인 패턴 이에 대한 고민에 대한 답을 찾아보자!! 2. MVC 패턴: Model -..

3. 상속은 언제 하면 좋은가?

장점: 중복되는 코드가 줄어든다. 단점: depth가 깊어지면 복잡하다. 짬에서 나오는 철학이 필요하다. Single Responsibility (단일 책임): 각 클래스는 한 개의 고려사항만 있으면 된다. -> 여러 책임을 다 가지려하면 복잡해진다. Type Safety (타입이 분명해야 할 때): 클래스 간의 명확한 구분이 필요한 경우 -> 학교 축구동아리에서 축구선수를 뽑으려고 하는데 미술부, 과학부 같이 너무 아무나 들어오게 하고 싶지 않아서 운동부 애들로 제한을 두고 싶어서 상속을 한다. Shared Base Classes(다자녀가 있다!): 기본 동작이 다양하게 구분되어야 하는 경우 -> 학생이 학습을 하는 기능이 있다면, 미술학생은 미술공부를 학습하고 체육학생은 운동공부를 학습하는 것과 같이..

2. Struct vs. Class

목차 1. Struct와 Class의 차이 2. 언제 Struct를 사용하는가 3. 언제 Class를 사용하는가 4. 현업 개발자의 추천 1. Struct와 Class의 차이 변수 할당할 때 차이가 생긴다. Class는 이미 할당된 변수를 새로운 변수로 할당할 때 새로운 변수는 기존의 변수를 지칭하고 있다. Structure는 복사가 된다. 이렇게 동작의 차이가 생기는 이유는 뭘까? 두 타입이 생성되는 인스턴스가 컴퓨터 안에서 할당되는 메모리 공간의 차이가 있기 때문이다. Class 는 Heap영역에, Structure는 Stack영역에 할당된다. 각 영역은 다른 속성을 갖고 있다. Stack은 시스템에서 당장 실행하거나 타이트하게 control, managing해야하는 놈들은 stack에 할당한다. 그..

1. Swift Method vs. Computed Property

의문? computed property와 메소드의 차이는 뭘까? 이미 저장된 stored property를 갖고 값을 재 가공하거나, 재 계산 할때 사용한다. 여기서 get, set의 경우 기존의 자바에서는 메소드로 만들어 줬는데 여기서는 stored property로 값을 가공하여 return 하는 computed property를 이용했다. var fullName: String { return "\(firstName) \(lastName)" } func fullName() -> String { return "\(firstName) \(lastName)" } 결론: Property : 호출시 저장된 값을 하나 반환한다. Method: 호출시 어떤 작업을 한다. 만약 Method가 그냥 값을 리텅하는 작..