본문 바로가기

ios개발14

[33일차] guard let과 if let 차이점 guard let track = item else { return } guard 뒤에 따라붙는 코드의 실행 결과가 true일 때 코드가 계속 실행됩니다. if 구문과는 다르게 guard 구문은 항상 else 구문이 뒤에 따라와야 합니다. 만약 guard 뒤 따라오는 Bool 값이 false라면 else의 블록 내부 코드를 실행하게 됩니다. 이 내부 코드에는 자신보다 상위 코드 블록을 종료하는 코드가 반드시 들어가게 됩니다. 코드 블록 종료시 return, break, continue, throw 등 제어문 전환 명령을 사용합니다. if let prefix = rawPrefix { print(prefix+name) } else { print("need prefix") } if let은 조건에 따라 다른 결.. 2020. 9. 19.
[32일차] Animation은 왜 사용하는 것인가? 사용자의 앱 서비스 이용과정에서 보다 재미있게 느껴지도록 하기 위해서 'Animation' 효과를 사용하기도 한다. 그렇다면 'Animation(애니메이션)' 이라는 것은 무엇일까? 한마디로 표현하자면, "시간에 따라 뷰의 상태가 바뀌는 것"이다. Animation은 3가지만 기억하면 된다. Animation = 시작, 끝, 시간(주기) 대표적으로 위와 같이 단순히 ImageView, Label 들이 Transition(회전), usingSpringWithDamping(스프링) 효과를 사용하여 역동적으로 보여질 수도 있다. override func viewDidLoad() { super.viewDidLoad() updateUI() prepareAnimation() } override func viewDi.. 2020. 9. 15.
[31일차] @IBAction과 @IBOutlet은 무엇인가? iOS 개발을 진행하다 보면, @IBAction, @IBOutlet 용어를 자주 접하게 된다. 처음에는 앱 개발과정에서 특정한 버튼을 추가 및 기능을 연결할 때 추가해야 되는 순서처럼 느꼈다. 이번 기회에 IBAction과 IBOutlet의 역할과 정의가 무엇인지 정리해보고자 한다. 참고로 etist블로그님의 글을 참고하였다. * IBAction, IBOutlet의 역할 @IBAction, @IBOutlet은 StoryBoard과 연결고리 역할을 수행한다. 즉, 사용자가 추가한 컴포넌트(버튼, 레이블)와 연결이 가능하다. - IBAction : 이벤트가 일어난 경우, 호출되는 Action을 정의한 것 - IBOutlet : 컴포넌트에 접근하기 위한 변수 * IBAction, IBOutlet의 정의 IB .. 2020. 9. 4.
[28일차] SearchBar와 키보드 숨김 처리 넷플릭스 앱과 비슷한 디자인의 앱을 만들어본다. 콘텐츠 플랫폼 앱에서 대부분 존재하는 검색바(SearchBar)를 추가해보고 키보드 관련 동작을 테스트해보고자 한다. 1. 검색 탭으로 이동 + 상단에 검색창(SearchBar)을 추가한다. 우리들이 보통 사용하는 앱에서는 키워드를 입력 후, [검색] 버튼을 누르면 키보드 화면이 내려가고 검색결과 화면이 나오는 게 일반적이다. 하지만, 이러한 처리가 자동으로 되지는 않는다. 키보드를 내려주는 별도의 처리가 필요하다. 2. 입력한 검색어를 출력하는 함수 생성 + [검색] 버튼 이후 '키보드' 자동 내리기 처리 SearchBar, TextField .. 등등 텍스트를 기재하는 여러 UI 요소에서는 resignFirstResponder() 를 자주 사용하게 될 .. 2020. 8. 22.
[27일차] Codable 이란? Swift4에서 JSON 데이터를 손쉽게 파싱이 가능한 기술이 나왔다고 한다. 그 기술이 바로 'Codable'이다. Swift 공식 홈페이지에서 말하는 정의는 다음과 같다. "A type that can convert itself into and out of an external representation." 자신을 변환하거나 외부표현(external representation)으로 변환할 수 있는 타입입니다. 여기서 말하는 Decodable, Encodable 이란 무엇일까요? - Decodable : 자신을 외부표현(external representation)에서 디코딩 할 수 있는 타입 - Encodable : 자신을 외부표현(external representation)으로 인코딩 할 수 있는 타.. 2020. 8. 19.
[26일차] URLSession (꼭 알아야 할 개념) 앱이 서버에서 애플리케이션 데이터를 검색하거나, 소셜미디어 상태를 업데이트하거나 원격 저장소 파일을 디스크로 다운로드하는 등, 모바일 애플리케이션의 중심에 있는 HTTP 네트워크 요청은 마법을 일으킵니다. 네트워크 요청에 대한 수많은 요구사항을 지원하기 위해 애플은 HTTP를 통해 콘텐츠를 다운로드, 업로드하기 위한 완성된 네트워킹 API인 URLSession을 제공 합니다. URLSession은 HTTP 요청의 송신과 수신을 담당하는 핵심 객체입니다. 다음 3가지 타입으로 제공되는 URLSessionConfiguration을 사용해서 생성합니다. * URLSessionConfiguration - .default: 디스크 지속(disk-persisted) 전역 캐시, 자격 증명(credential)과 쿠.. 2020. 8. 16.
[25일차] Concurrency 동시성 (sync/Async) * Concurrenty (동시성) - 사용자 인터랙션 처리 (Main Thread에서 처리) - 네트워킹 - 백그라운드에서 파일 다운로드 - 파일 저장하고 읽기 컴퓨터에서는 여러 개의 스레드가 동시에 수행되면서 백그라운드에서 수많은 작업들이 이루어진다. * GCD (Grand Centeral Dispatch) : 해야 할 일들을 GCD로 전달해주면 시스템에서 안전하게 수행될 수 있도록 처리 (Queue FIFO 구조로 처리) * DispatchQueue 1) Main Queue : 메인 스레드에서 작동하는 큐 ex) DispatchQueue.main.async { ... } 2) Global Queue : 시스템에 의해 관리되는 큐 # QoS (Quality of Service) : 큐의 우선순위를 결.. 2020. 8. 15.
[21일차] Codable 이란? 실무에서 자주 사용하는 JSON 데이터를 실제로 활용하기 위해서는 파싱이라는 과정이 꼭 필요하다. 하지만, Swift에서는 Codable이라는 것이 이를 자동으로 처리해준다. (매우 간편하고 활용도가 높은 최고!) Codable의 사전적인 의미는 아래와 같다. "A type that can convert itself into and out of an external representation." 자신을 변환하거나 외부표현(external representation)으로 변환할 수 있는 타입입니다. Codable은 Decodable과 Encodable 프로토콜을 준수하는 타입(프로토콜) 이다. - Decodable : 자신을 외부표현(external representation)에서 디코딩 할 수 있는 타입.. 2020. 8. 10.
[17일차] Class와 Struct를 사용해야 할 때 * 이럴 때 Struct 쓰자 (1) 두 Object를 "같다, 다르다"로 비교해야 하는 경우 (2) Copy 된 각 객체들이 독립적인 상태를 가져야 하는 경우 (3) Object의 데이터를 여러 스레드에 걸쳐 사용할 경우 (각 Object가 독립적으로 존재하므로 다중 스레드를 사용하더라도 오류가 날 확률이 낮다.) * 이럴 때 Class 쓰자 (1) 두 Object의 인스턴스 자체가 같음을 확인할 때 (2) 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우 # 쉽게 사용하는 Tip) 1. 일단 Struct로 쓰자 2. 그 이후에 Class로 바꿔보자 (상황에 따라 다름) - 공식 Doc https://developer.apple.com/swift/blog/?id=10 # 실무 Ti.. 2020. 8. 5.