[Sesac IOS] 21일차 TIL
·
TIL
21일차 수업을 듣고 새로 배운 내용을 정리한 글입니다. Learned HTTP (Hyper Text Transfer Protocol) 네트워크(인터넷)를 통해 클라이언트와 서버가 데이터를 주고받을 수 있는 통신 규약 메시지가 문자(Text)로 구성되기 때문에 의도치않은 누군가가 메세지를 읽을 수도 있다. 클라이언트와 서버가 데이터 전송 시 서로간의 약속(통신 규약)을 지키기 때문에 통신 가능 네트워크 통신에 필요한 것 3가지 : 요청과 응답(HTTP 메시지), HTTP 메서드, 인증 키 1) HTTP 통신의 특징 단방향 통신 : 클라이언트가 요청하고 서버가 응답하는 방식 데이터를 주고 받기 위해서 반드시 클라이언트가 요청을 해야함. 비연결성 : 클라이언트가 요청할때마다 매번 새로운 연결을 생성함. 계속..
[Sesac IOS] 20일차 TIL
·
TIL
20일차 수업을 듣고 새로 공부한 것과 공부할 것을 정리한 글입니다. Learned User Notification(UN) 프레임워크 앱으로부터 사용자의 기기에 알림을 표시하는 기능을 담당하는 프레임워크 알림은 앱 실행 여부와 상관없이 알림 센터에 표기되며 옵션에 따라 커스텀 사운드와 뱃지를 사용할 수 있다. 사용자가 앱 알림 권한을 허용했을때 알림이 표시되고 알림에 대해 특정 작업을 할때까지 계속 표시된다. 디바이스 설정에서 앱 알림 표시 여부를 설정할 수 있다. 알림을 생성하는 환경에 따라 로컬(Local)과 원격(Remote) 알림으로 나뉜다. 로컬 알림(Local Notification) 앱 내부에서 알림을 생성해 사용자 기기에 표시하는 방법 UserDefault처럼 앱 내부에 알림 정보(컨텐츠,..
[Sesac IOS] 19일차 TIL
·
TIL
19일차 수업을 듣고 새롭게 알게된 내용을 정리한 글입니다. Learned 프로토콜(Protocol)과 델리게이트(Delegate) 패턴 델리게이트란 "위임하다" 라는 뜻으로, 한 객체에서 처리해야할 작업(이벤트 처리, 데이터 표시 등)을 다른 객체에게 위임해서 효율적으로 처리하는 디자인 패턴 대리자로 지정된 객체는 작업이 생길때마다 내부의 콜백 메서드를 호출해서 작업을 처리한다. 프로토콜은 이 델리게이트 패턴을 구현하는데 이용된다. 그 예로 UITableView는 대리자를 지정해서 화면에 데이터를 표시하고 특정 동작을 처리해야하는데, 이때 UITableViewDelegate와 UITableViewDataSource 프로토콜이 이용된다. 프로토콜은 "규약"이라는 뜻으로, 구조체, 클래스, 열거형, 익스텐..
[Swift] COW(Copy-on-Write)에 대하여
·
Swift
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
·
TIL
18일차 수업을 듣고 새로 배운 것과 공부할 것을 정리한 글입니다. Learned 프로퍼티 옵저버 주로 저장 프로퍼티에 사용하고 프로퍼티를 관찰하다가 값이 변경되려고 할때 호출된다. (연산 프로퍼티와 함께 쓸 수 없다.) willSet : 값이 변경되기 전에 호출, newValue 매개변수로 새로운 값을 전달받는다. didSet : 값이 변경된 후에 호출, oldValue 변수에 기존 값이 저장된다. 인스턴스 / 타입(static, class) 메서드 인스턴스 메서드에서는 인스턴스 및 타입 프로퍼티를 모두 사용할 수 있지만, 타입 메서드에서는 타입 프로퍼티만 사용 가능하다. (타입 이름 생략 가능) 메소드에 class 키워드를 사용해서 수퍼 클래스 (부모 클래스)의 타입 메서드를 서브 클래스에서 재정의할..
[IOS] UIView의 tintColor 프로퍼티에 대하여
·
IOS
앱의 화면에서 일관된 글자색과 배경색을 적용하기 위해 tintColor 프로퍼티를 사용하면서 공부하고 경험한 내용을 정리한 글입니다. 1. tintColor의 정의 애플의 개발자 문서에서는 다음과 같이 설명하고 있다. The first nondefault tint color value in the view’s hierarchy, ascending from and starting with the view itself. UIView의 틴트 컬러란 자기 자신의 뷰 객체부터 시작하여 뷰 계층을 따라 올라가면서 처음 만나는 default가 아닌 tintColor의 값을 리턴해주는 프로퍼티이다. tintColor는 시스템 UI가 활성화 상태일때 시각적으로 보여지며, system 타입의 UIButton에서 흔히 볼 ..
[Sesac IOS] 17일차 TIL
·
TIL
17일차 수업을 듣고 새로 알게된 점과 공부할 내용을 정리한 글입니다. Learned 연산 프로퍼티 (Computed Property) 저장 프로퍼티와 다르게 메모리에 공간이 할당되지 않아 값을 저장할 수 없지만 다른 프로퍼티의 값을 사용해서 계산한 결과를 제공해준다. 계산한 결과가 달라질 수 있기 때문에 연산 프로퍼티는 항상 var로 선언해야 한다. 클래스, 구조체, 열거형에서 사용할 수 있다. 접근자(getter) : 값을 계산해서 리턴하는 역할, 설정자 없이 읽기 전용으로 사용할 수 있다. 읽기 전용으로 사용할 경우 get 키워드는 생략이 가능하다. 설정자(setter) : 다른 저장 프로퍼티에 값을 저장하는 역할 설정자는 파라미터(newValue)로 전달받은 값을 계산하여 다른 저장 프로퍼티에 저..
[프로그래머스] 징검다리
·
알고리즘
https://school.programmers.co.kr/learn/courses/30/lessons/43236 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이분탐색 문제인걸 알고 풀어도 어려운 문제였다. 알고리즘을 어떻게 적용해야 할지 아이디어가 떠오르지 않아서 힌트를 찾아봤는데 힌트를 보고도 다른 부분에서 막혀서 3시간 정도를 고민하다가 정답을 참고했다. 내가 생각한 풀이 n개의 돌을 제거할때 어떤 돌을 제거하냐에 따라 거리의 최소값이 달라지므로 n개의 돌을 제거하는 모든 경우의 수를 구하는 방법을 생각했지만 제거 가능한 돌의 개수가 너무 많아서 ..
[Sesac IOS] 15일차 TIL
·
TIL
15일차 수업을 듣고 새로 알게된 점과 조사하고 싶은 점들을 정리한 글입니다. Learned 지연 (lazy) 저장 프로퍼티 프로퍼티를 사용하기 전엔 nil값을 갖다가 사용할때 비로소 설정한 초기값을 가지고 메모리에 올라감 따라서 값이 변하지 못하는 상수(let)로 선언하지 못함. 지연 프로퍼티를 멤버로 가지는 클래스, 구조체가 메모리에서 해제될때 함께 해제됨. 타입 프로퍼티도 lazy하게 동작하지만 앱이 종료될때 메모리에서 해제된다는 차이 존재 UIWindow 객체는 UIViewController를 투영해주는 객체 UIViewController의 title 프로퍼티는 객체가 네비게이션 바 또는 탭 바 아이템을 갖고 있을때 이 프로퍼티에 저장된 값을 해당 아이템에 할당한다. AppDelegate에서 새로..
[Sesac IOS] 13~14일차 TIL
·
TIL
13~14일차 수업을 듣고 새로 알게된 것과 알고 싶은 점들을 정리한 글입니다. Learned 하나의 스위프트 파일에 여러개의 클래스 정의를 선언하는 것도 가능은 하다. 스토리보드로 컬렉션 뷰를 사용할때 Size Inspector의 Estimate Size를 None으로 설정해야 코드로 설정한 셀의 사이즈가 정상적으로 적용된다. 스토리보드에서 뷰에 설정한 속성(값)들은 뷰 생명주기 중 loadView 메소드에서 호출된다. 즉, viewDidLoad가 더 나중에 호출되기 때문에 viewDidLoad에서 코드로 설정한 값이 더 우선한다. 테이블 뷰보다 컬렉션 뷰가 더 자유롭기 때문에 다양한 UI에 대응하기 편리하다. String().trimmingCharacters 메소드로 공백 제거 가능 하나의 테이블 뷰..