본문 바로가기

iOS34

아이폰12 초고속으로 만나는 날 임박! (10월 14일 새벽2시) 매년 애플은 신제품 행사를 9월, 10월, 11월 중에 발표합니다. 올해는 특히 아이폰12에 전 세계의 관심이 주목됩니다. 왜냐하면 애플에서 처음으로 선보이는 5G 스마트폰이기 때문이죠 ! 이번 애플 이벤트는 COVID-19로 인해 온라인으로 생중계될 예정입니다. 미국 시간은 10월 13일 화요일 오전 10시이지만, 우리는 한국시간으로 10월 14일 새벽 2시에 진행된다. 초고속이 의미하는 바는 최초의 5G 아이폰을 의미하는 키워드로 보인다. 또한 A14 바이오닉 칩셋이 탑재되므로 현존하는 아이폰 중에 최고의 스펙일 것이다. 사람들이 가장 궁금해하는 것은 한국이 1차 출시국에 포함되는지 여부이다. 이에 대한 다양한 추측들이 있는데, 가장 유력한 의견으로는 5G 서비스가 원활하게 서비스 중인 국가가 전 세.. 2020. 10. 13.
[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.
[30일차] @escaping 이란? Swift3에서는 함수에 클로저를 넘길 때 기본으로 non-escaping으로 지정된다. 다음과 같이 escaping과 non-escaping을 살펴보기로 한다. Non-escaping 클로저의 라이프 사이클은 다음과 같다. 1. 함수에 클로저를 넘긴다. 2. 함수는 클로저를 실행한다. 3. 함수가 리턴된다. 클로저가 함수의 바디를 탈출하지 않는 것을 살펴본다. 함수가 종료되었을 때 패스된 클로저는 범위를 벗어나게 되고 클로저에 추가 참조는 더 이상 남아있지 않다. 메모리 관리에 대한 부분을 본자면 참조를 추가하고 해지하는 작업을 기억할 수 있다. 함수가 리턴된 후에 클로저 객체의 참조 카운트는 함수가 호출되기 전과 동일하게 된다. @escaping 이란 무엇인가? 클로저(Closure)가 함수의 인자로.. 2020. 8. 28.
[29일차] Protocol이란? 아래의 글은 '군옥수수님의 포스팅' 내용을 발췌한 내용입니다. Swift를 잘 다루고 여러 샘플 코드들을 정확히 이해하려면 protocol은 완벽히 익히고 있어야 한다고 생각합니다. 어떻게 보면 Swift의 강력한 기능 중 하나가 protocol이라고 생각됩니다. 그럼 지금부터 protocol에 대해서 천천히 알아가는 시간을 갖도록 하겠습니다. 애플의 공식문서에 정의된 protocol의 정의는 다음과 같습니다. "A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality." 직역하자면 다음과 같습니다. "protocol은 특정 작.. 2020. 8. 27.
[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.