분류 전체보기
[Sesac IOS] 26~27일차 TIL
26~27일차 수업 내용을 정리한 글입니다. Learned xib (Xcode Interface Builder) 와 nib 1) 개요 nib은 인터페이스 빌더로 설정한 UI 객체의 속성, 레이아웃 등의 정보가 담겨있는 바이너리 파일을 말함. nib 파일을 xml 형식으로 변환한 파일이 xib이다. 실제로 xib 파일을 소스 코드로 확인하면 설정한 값들이 여러 태그로 구조화돼있다. xib는 컴파일러가 이해할 수 없는 형식이므로 컴파일 과정에서 xib 파일이 다시 nib 파일로 변환됨. UIViewController, UITableViewCell, UICollectionViewCell 클래스의 경우 nib파일을 사용해 객체를 생성하는 메서드가 존재함. 하나의 nib 파일에 여러 개의 객체(top-level ..
[Sesac IOS] 25일차 TIL
25일차 수업에서 배운 내용을 정리한 글입니다. Learned 프로세스(Process) 1) 프로그램 특정 작업을 수행할 수 있고 컴퓨터가 실행시킬 수 있는 코드 프로그래밍 언어로 짜여진 코드는 컴파일러에 의해 컴퓨터가 이해할 수 있는 언어로 번역된다. 2) 프로세스 컴퓨터에 의해 실행되어 메모리에 올라간 프로그램 프로세스는 최소 한 개의 스레드(메인 스레드)를 갖는다. 프로세스마다 독립적인 메모리 공간을 가지기 때문에 다른 프로세스의 메모리에 접근할 수 없다. 멀티 스레드 1) 개념 스레드란 프로세스에서 수행되는 작업의 단위 멀티 스레드란 하나의 프로세스에 여러 스레드가 존재해서 각 스레드마다 여러 작업들이 동시에 수행되는 것을 의미함. 동시에 여러 작업을 수행하기 때문에 빠르게 처리할 수 있다는 장점..
[Sesac IOS] 24일차 TIL
24일차 수업을 정리한 글입니다. Learned iOS Pagenation 구현 방법 1) UITable(Collection)View의 willDisplay 메서드 특정 인덱스의 셀이 화면에 보여지기 바로 직전에 호출되는 메서드 마지막 데이터를 가진 셀이 보여질 때 데이터를 새로 가져올 수 있음. 2) UIScrollView의 scrollViewDidScroll 메서드 스크롤뷰를 상속받는 테이블뷰와 컬렉션뷰에서도 스크롤뷰의 델리게이트 메서드를 사용할 수 있다. 현재 스크롤의 위치가 특정 지점에 도달했을 때 데이터를 새로 가져올 수 있음. func scrollViewDidScroll(_ scrollView: UIScrollView) { // 현재 스크롤이 더 이상 스크롤이 되지 않는 지점에 위치하게 될때..
[Sesac IOS] 23일차 TIL
23일차 수업 내용을 정리한 글입니다. Learned .gitignore 의도적으로 git에서 변경사항을 추적하지 못하도록 등록해놓은 파일 또는 폴더 목록 xcode에서 Empty 파일 형식으로 생성할 수 있음. 이미 추적 중인 파일을 나중에 gitignore에 추가했다면 git에서 해당 파일을 제거하는 작업이 필요함. git rm --cached file_name 명령어로 제거 후 commit, push 프로그래밍 언어, OS에 따라 .gitignore 파일을 만들어주는 사이트 https://www.toptal.com/developers/gitignore Pagenation 1) 개요 대량의 데이터와 리소스를 분할해서 가져오는 방법을 말하며, 주로 서버의 데이터와 리소스를 다룰 때 사용한다. 쇼핑 사이..
[Sesac IOS] 22일차 TIL
22일차 수업 내용을 정리한 글입니다. Learned HTTP vs Socket 1) 소켓의 특징 클라이언트의 요청 없이도 데이터를 주고 받을 수 있는 양방향 통신 연결을 계속 유지하기 때문에 상대적으로 리소스를 많이 사용함. 대표적으로 채팅 앱에서 서버가 클라이언트에게 메시지를 전달하는데 사용 2) HTTP 통신 클라이언트의 요청이 있어야 데이터를 주고받을 수 있는 단방향 통신 데이터를 받기 위해서는 반드시 서버에 요청을 보내야함. 요청과 응답을 보낼 때만 연결되기 때문에 상대적으로 리소스를 덜 사용함. (HTTP 통신의 특징 중 비연결성) 3) HTTPS TCP와 HTTP 사이에서 작용하며 데이터 패킷을 암호화하는 역할 URL은 노출되지만 쿼리스트링과 파라미터는 암호화되어 전송 HTTP는 통신 과정..
[Sesac IOS] 21일차 TIL
21일차 수업을 듣고 새로 배운 내용을 정리한 글입니다. Learned HTTP (Hyper Text Transfer Protocol) 네트워크(인터넷)를 통해 클라이언트와 서버가 데이터를 주고받을 수 있는 통신 규약 메시지가 문자(Text)로 구성되기 때문에 의도치않은 누군가가 메세지를 읽을 수도 있다. 클라이언트와 서버가 데이터 전송 시 서로간의 약속(통신 규약)을 지키기 때문에 통신 가능 네트워크 통신에 필요한 것 3가지 : 요청과 응답(HTTP 메시지), HTTP 메서드, 인증 키 1) HTTP 통신의 특징 단방향 통신 : 클라이언트가 요청하고 서버가 응답하는 방식 데이터를 주고 받기 위해서 반드시 클라이언트가 요청을 해야함. 비연결성 : 클라이언트가 요청할때마다 매번 새로운 연결을 생성함. 계속..
[Sesac IOS] 20일차 TIL
20일차 수업을 듣고 새로 공부한 것과 공부할 것을 정리한 글입니다. Learned User Notification(UN) 프레임워크 앱으로부터 사용자의 기기에 알림을 표시하는 기능을 담당하는 프레임워크 알림은 앱 실행 여부와 상관없이 알림 센터에 표기되며 옵션에 따라 커스텀 사운드와 뱃지를 사용할 수 있다. 사용자가 앱 알림 권한을 허용했을때 알림이 표시되고 알림에 대해 특정 작업을 할때까지 계속 표시된다. 디바이스 설정에서 앱 알림 표시 여부를 설정할 수 있다. 알림을 생성하는 환경에 따라 로컬(Local)과 원격(Remote) 알림으로 나뉜다. 로컬 알림(Local Notification) 앱 내부에서 알림을 생성해 사용자 기기에 표시하는 방법 UserDefault처럼 앱 내부에 알림 정보(컨텐츠,..
[Sesac IOS] 19일차 TIL
19일차 수업을 듣고 새롭게 알게된 내용을 정리한 글입니다. Learned 프로토콜(Protocol)과 델리게이트(Delegate) 패턴 델리게이트란 "위임하다" 라는 뜻으로, 한 객체에서 처리해야할 작업(이벤트 처리, 데이터 표시 등)을 다른 객체에게 위임해서 효율적으로 처리하는 디자인 패턴 대리자로 지정된 객체는 작업이 생길때마다 내부의 콜백 메서드를 호출해서 작업을 처리한다. 프로토콜은 이 델리게이트 패턴을 구현하는데 이용된다. 그 예로 UITableView는 대리자를 지정해서 화면에 데이터를 표시하고 특정 동작을 처리해야하는데, 이때 UITableViewDelegate와 UITableViewDataSource 프로토콜이 이용된다. 프로토콜은 "규약"이라는 뜻으로, 구조체, 클래스, 열거형, 익스텐..
[Swift] COW(Copy-on-Write)에 대하여
mutating 키워드를 찾아보다가 알게된 cow에 대한 개념을 정리한 글입니다. COW (Copy-On-Write) 직역하면 쓰기(Write)에서 복사(Copy) 한다는 뜻이다. 이것을 설명하기 위해 예를 들어보자. 우리가 알고있는 구조체는 값 타입이기 때문에 새로운 변수로 값이 전달될때 값 복사가 일어난다고 알고 있지만 사실은 조금 다르다. Swift에서 기본 데이터 타입(Int, Double, String)과 컬렉션 타입(Array, Dictionary)은 구조체로 구현돼있지만 아래 같은 상황에서 값 복사가 일어나지 않는다. var first = [1, 2, 3, 4, 5] var second = first var third = first 만약 first의 원소 개수가 대략 천만개라면 값을 전달할때..
[Sesac IOS] 18일차 TIL
18일차 수업을 듣고 새로 배운 것과 공부할 것을 정리한 글입니다. Learned 프로퍼티 옵저버 주로 저장 프로퍼티에 사용하고 프로퍼티를 관찰하다가 값이 변경되려고 할때 호출된다. (연산 프로퍼티와 함께 쓸 수 없다.) willSet : 값이 변경되기 전에 호출, newValue 매개변수로 새로운 값을 전달받는다. didSet : 값이 변경된 후에 호출, oldValue 변수에 기존 값이 저장된다. 인스턴스 / 타입(static, class) 메서드 인스턴스 메서드에서는 인스턴스 및 타입 프로퍼티를 모두 사용할 수 있지만, 타입 메서드에서는 타입 프로퍼티만 사용 가능하다. (타입 이름 생략 가능) 메소드에 class 키워드를 사용해서 수퍼 클래스 (부모 클래스)의 타입 메서드를 서브 클래스에서 재정의할..