200401_TIL

|

스터디 기록

스터디 내용

1. 외부 프레임워크 적용하는 법 숙지

cocoapods에 대한 기본적인 이해와 설치, 코코아팟을 이용해 외부 라이브러리 적용하는 방법 공유
코코아팟을 사용하는 가장 큰 이유는 버전관리! 프레임워크 하나 마다의 용량이 매우 큰데 실제 개발환경에서는 프레임워크 자체를 깃에 올리지 않고 pods 파일만 올림으로써 버전관리용으로 사용함.

2. 외부 프레임워크 한가지씩 알아와서 서로에게 소개

2-1) firebase: 클라우드 서버처럼 사용가능(서버, 데이터베이스, 사용자인증, 호스팅, 테스트 등의 역할 가능)
사용해본 결과 앱이 무거워짐을 느낌. 실제 클라우드 데이터를 만들어 유저 인포를 넣는 방식을 사용해 봄
사용 퍼센티지에 따라 과금방식을 이루기 때문에 비용이 약간의 단점이 됨
실제 개발환경에서는 push 서비스를 이용할때 사용. 서비스를 제공할때 안드로이드, ios 기종과 관계없이 푸시 알림을 받는 방식이 다른데 이때 firebase에 위임해 접근이 가능함!

2-2) alamofire: 스위프트 기반의 HTTP 네트워킹 라이브러리. 이는 Url session 기반으로 Url session은 네트워킹 호출에서 모호한 부분이 많지만 alamofire을 사용하게 되면 데이터를 접근하기 위한 노력을 줄여 코드를 더 깔끔하고 가독성있게 만들어준다. 만약 이미지를 서버로 전송한다고 할때, url session을 사용한다면 서버가 읽을 수 있는 문자열로 변형해야하는 여러 과정을 거쳐야하지만, alamofire을 사용하면 몇줄 안되는 코드로 전송이 가능하다. 따라서 네트워킹에 좀 더 심화된 기능을 할때 큰 도움이 되는 프레임워크!

뿐만 아니라 alamofire은 비동기로 네트워크 처리를 하기 때문에 서버로부터 응답을 받을때까지 기다리지 않고 콜백을 통해 응답을 처리해준다. 그리고 alamofire은 swiftyjson 라이브러리와 같이 자주 사용한다(파싱하는 경우) 혹은 codable과도 쉽게 사용가능하다고 공유

2-3) kingfisher: 웹에서 이미지를 가져와 뿌려주는 역할을 한다.(이미지를 쉽게 캐싱하고 다운로드 하도록 만들어진 라이브러리) 캐시의 유무를 체크하는 메서드가 기본적으로 있어서 이미지를 가져올때 캐시를 체크해 없으면 캐시에 이미지를 저장해주고 나중에 불러올때는 캐시에 있는 이미지를 그대로 가져올 수 있다. 캐시 처리를 통해서 유지할 기간 혹은 용량을 지정해줄 수 있는 특징이 있다.

참고) kingfisher와 alamofireimage: 두 라이브러리 모두 단순히 이미지 주소로부터 이미지를 다운받는 것 뿐 아니라 이미지 처리에 있어 탁월한 기능을 하지만 kingfisher는 기본적으로 캐싱을 제공하며 alamofireimage는 기본 파싱이 제공되지 않아 별도의 캐시처리가 필요하다는 차이점이 존재한다.

2-4) snap kit: 오토레이아웃을 코드로 작성하는 경우 코드를 간결하게 만들어주는 라이브러리. 스토리보드와 함께 사용하면 충돌이 나기때문에 스냅킷을 사용하려면 코드로만 작성해야한다. 하나의 뷰를 잡고 뷰 안에서 각각의 컴포넌트 중심으로 오토레이아웃을 쉽게 적용해주는 특징을 가진다. 스냅킷을 사용하지 않으면 중복되는 코드를 반복해서 쓰게 되지만, 사용한다면 코드의 길이가 확연하게 줄어든다. (코드를 압축해서 사용하는게 가능해짐)

3. 각자 공부하면서 질문

  • 강한 참조와 약한참조, ARC
  • get과 post 방식의 차이 이해
  • app delegate와 scene dalegate

4. EdWith 3번째 프로젝트 마무리 (코드 리뷰)

5. 앞으로 스터디에서 진행할 프로젝트 계획

5-1) 코딩테스트 준비  » 차후
5-2) 작은 앱이라도 하나 만들어보기  » 선택됨
5-3) 클론 프로젝트
5-4) 관심사끼리 모여 협업으로 프로젝트 진행해보기
5-5) 면접질문을 준비해서 각자 5~10분정도씩 발표시간 갖기  » 차후

6. 프로젝트 진행방식 계획

6-1) 개인이 하나의 프로젝트 진행 > 주제가 각각 다른 방식 > 혹은 같은 프로젝트를 각자 해보는 방법
6-2) 팀 당 하나의 프로젝트 > 협업  » 선택됨
6-3) 5명이 하나의 프로젝트 각자 진행
6-4) 5명이 하나의 프로젝트 나눠서 진행 > 각각 뷰를 나눠서 등…