본문 바로가기

전체 글282

[iOS] ViewController의 생명주기(Life Cycle) View Contoller의 생명주기 앱은 보통 하나 이상의 화면들로 구성되어 있다. 즉 앱에는 하나 이상의 'View Controller'가 존재하는 것이다. 각각의 뷰 컨트롤러는 생명주기를 갖고 있다. 여기서 생명주기라는 것은 각각의 뷰 컨트롤러가 화면에 나타나거나 사라지는 것을 의미한다. 뷰 컨트롤러의 생명주기는 다음과 같다. Appearing : 뷰가 화면에 나타나는 중 Appeared : 뷰가 화면에 나타나는게 완료된 상태 Disappearing : 뷰가 화면에서 사라지는 중 Disappeared : 뷰가 화면에서 사라진 상태 각각의 상태로 변경될 때 위의 그림에 표시된 메서드가 iOS 시스템에 의해 자동으로 호출된다. 각각의 의미에 대해서 살펴보자. viewDidLoad() 위의 그림에서는 보.. 2021. 12. 12.
[Network] DNS란? 도메인 네임 시스템(Domain Name System, DNS) DNS는 인터넷 전화번호부와 같다. 사람은 naver.com이나 google.com과 같은 도메인 이름을 통해서 인터넷에 접속한다. DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 해당 도메인 이름을 IP 주소(192.168.1.0과 같은)로 변환한다. 사람은 숫자와 영문으로 이루어진 복잡한 IP 주소를 기억하지 않고 기억하기 쉬운 도메인 이름을 통해서 서버에 접속한다. DNS는 이러한 도메인 이름을 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다. DNS 용어 재귀적 질의(Recursive Query) - 사용자 호스트가 Recursive 네임서버로 질의할 때 사용되는 방식으로 Recursive 네임서버로 대.. 2021. 12. 9.
[Network] 08. 네트워크의 전체 흐름 살펴보기 랜 카드에서의 데이터 전달과 처리 웹 사이트에 방문했을 때 이루어지는 전체적인 데이터 처리 과정에 대해 알아보자. 네트워크의 구성 OSI 모델 상위 응용 계층부터 하위 물리 계층까지까지 각각 어떤 일이 나는지 살펴보자. 응용 계층(세션 계층과 표현 계층을 포함) -> 애플리케이션 등에서 사용하는 데이터를 송수신하는 데 필요하다 전송 계층 -> 목적지에 데이터를 정확하게 전달하는 데 필요하다 네트워크 계층 -> 다른 네트워크에 있는 목적지에 데이터를 전달하는 데 필요하다 데이터 링크 계층 -> 랜에서 데이터를 송수신하는 데 필요하다 물리 계층 -> 데이터를 전기 신호로 변환하는 데 필요하다 컴퓨터의 데이터가 전기 신호로 변환되는 과정 위의 구성으로 이루어진 네트워크에서 컴퓨터의 웹 브라우저에서 URL을 입.. 2021. 12. 8.
[iOS] UserDefaults를 사용한 데이터 저장 앱 실행 전반에 걸쳐 키-값 쌍을 지속적으로 저장할 수 있는 사용자의 기본 데이터베이스에 대한 인터페이스 class UserDefaults : NSObject UserDefaults 클래스는 기본 시스템과 상호 작용하기 위한 프로그래밍 방식의 인터페이스를 제공한다. 런타임 시 객체를 사용하여 app이 사용자의 기본 데이터베이스에서 사용하는 기본값을 읽기 때문에 필요할 때마다 데이터베이스를 열 필요가 없어진다. 사용자의 정보라던가 게시물에 대한 정보처럼 대용량의 데이터를 저장할 때 사용하지 않고 자동 로그인 여부, 아이디 저장, 환경설정에서 설정하는 설정 데이터 값(사용자가 선호하는 측정 단위나 미디어 재생 속도 등) 같은 단일 데이터 등을 UserDefaults로 담아서 보관한다. 예제 UIAlertCo.. 2021. 12. 7.
[iOS] UIAlertController를 이용한 메시지 창 사용자에게 알림 메시지를 표시하는 객체 @MainActor class UIAlertController : UIViewController UIAlertController는 앱 실행 도중에 사용자에게 메시지를 전달하고 의사를 입력받기 위한 목적으로 제공되는 객체이다. 텍스트로 이루어진 짤막한 메시지만을 전달하기 위한 용도로 사용되기도 하지만, 예/아니오 또는 그 이상의 여러 항목 중에서 하나를 선택할 수 있는 버튼을 제공하여 사용자와 상호작용하는 용도로 사용되는 경우가 많다. UIAlertController에서는 사용자가 원하는 대로 버튼을 추가할 수 있다. 버튼은 UIAlertAction 객체에 의해 구현되는데, 필요한 버튼 수만큼 UIAlertAction 객체를 구현하고, 이 버튼이 클릭 되었을 때 실행.. 2021. 12. 7.
[Network] 07. 응용 계층 : 애플리케이션에 데이터 전송하기 응용 계층의 역할 OSI 모델의 응용 계층의 역할에 대해서 알아보자. 응용 계층의 역할 애플리케이션은 서비스를 요청하는 측인 클라이언트와 서비스를 제공하는 측인 서버로 나누어 생각할 수 있다. 웹 브라우저나 메일 프로그램은 클라이언트에 해당하고, 웹 서버 프로그램이나 메일 서버 프로그램은 서버에 해당한다. 이러한 애플리케이션은 응용 계층에서 동작한다(해당 글에서 응용 계층은 5계층인 세션 계층과 6계층인 표현 계층을 포함하는 것으로 생각한다). 응용 계층에서는 사용자 측(클라이언트)의 요청을 전달하기 위해 통신 대상(서버 등)이 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달하는 역할을 한다. 클라이언트 측 애플리케이션이 서버 측 애플리케이션과 통신하려면 응용 계층의 프로토콜을 사용해야 한.. 2021. 12. 6.
[iOS] UITableView 알아보기 - 2 UITableViewDelegate 선택 항목 관리, 섹션의 header 및 footer 구성, 셀 삭제 및 순서 변경, 테이블 뷰에서 다른 작언 수행에 대한 프로토콜 @MainActor protocol UITableViewDelegate 테이블 뷰 delegate 객체는 UITableViewDelegate 프로토콜을 채택한다. 테이블 뷰 delegate는 테이블 뷰의 모양과 동작을 관리하기에 MVC 디자인 패턴 중, Controller와 관련이 있다. delegate는 테이블 뷰의 시각적인 부분 설정, 행의 액션관리, 액세서리 뷰 지원 그리고 테이블 뷰의 개별 행 편집을 도와준다. UITableViewDelegate 프로토콜의 주요 메서드는 다음과 같다. 필수로 구현해야 하는 메서드는 존재하지 않는다... 2021. 12. 6.
[iOS] UITableView 알아보기 - 1 단일 열의 행을 사용하여 데이터를 표시하는 View @MainActor class UITableView : UIScrollView iOS의 tableView는 세로 스크롤하는 내용의 행을 하나의 열에 표시한다. 표의 각 행에는 앱 컨텐츠 중 하나가 포함된다. 예를 들어, 연락처 앱은 각 연락처의 이름을 별도의 행에 표시하고 설정 앱의 메인 페이지에는 사용 가능한 설정 그룹이 표시된다. 하나의 긴 행 목록을 표시하도록 테이블을 구성하거나 관련 행을 섹션으로 그룹화하여 내용을 쉽게 탐색하게 할 수 있다. UITableView는 테이블의 기본 모양을 관리하지만 앱은 실제 컨텐츠를 표시하는 셀(UITableView Cell 객체)을 제공한다. 표준 셀 구성은 텍스트와 이미지의 간단한 조합을 나타내지만 원하는 컨.. 2021. 12. 5.
[iOS] @IBInspectable, @IBDesignable OverView @IBInspectable과 @IBDesignable을 사용하면 커스텀 뷰를 만들 때 인터페이스 빌더 내에서 라이브로 화면이 어떻게 구성되는지 볼 수 있다. 즉, 빌드를 통해 실행하여 보지 않고 실시간으로 스토리보드상에서 확인할 수 있다. @IBInspectable 코드와 스토리보드의 인스펙터 영역을 연결해 주는 역할을 한다. 즉, 인스펙터 영역에 내가 원하는 Attribute를 추가하고 싶을 때 사용하면 된다. 버튼을 동그란 형태로 만들 수 있는 'isRound' Attribute를 추가해 주는 작업을 해보자. 화면에 위와 같은 '1번' 버튼이 있다. 인스펙터를 통해서 해당 버튼을 원형으로 만들고 싶으면 어떻게 해야 할까? 인스펙터에 isRound Attribute를 추가해보자. 먼저 .. 2021. 12. 5.