나의 터치 이벤트에 반응한 뷰가 누구인지 알아보기 위해 필요한 것이 hitTest!hitTest의 목적은 터치 이벤트가 발생한 최상단의 뷰를 찾기 위함이다. point를 포함하고 있는 View에서 가장 멀리 떨어진 View(= 최상단의 뷰)를 반환한다.여기서 말하는 최
윈도우는 디바이스의 스크린을 빈틈없이 채우기 위한 객체로, 항상 유저 인터페이스 표현 계층의 최상위에 위치한다. View의 일종이지만, 직접 콘텐츠를 가지고 있지는 않는다. 콘텐츠를 가진 View를 내부에 배치하여 화면에 출력하는 역할을 한다.
ABI의 안전성을 계속해서 염두해 두어야 한다. ABI의 안전성을 유지한다는 것은 함수의 인터페이스(return type, number, types, order of arguements), 데이터 타입 정의, 데이터 구조 등을 변경하는 것을 의미하는 것이 아니다.
한 크래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하여 인터페이스 호환성문제를 해결할 수 있다. 어댑터를 이용하면 호환되지 않는 충전기도 사용할 수 있다.이처럼
추가적인 코드작업 없이도, 퀄리티 있는 에니메이션 적용이 가능하다. 개선된 Data Source 매커니즘은 완벽하게 동기적인 버그나, 예외, 충돌 상황들을 피할 수 있게 해준다. UI 데이터의 동기화 부분 대신 앱의 동적인 데이터와 내용에 집중할 수 있다.
객체의 Life Cycle을 관리하기 위한 방법으로 두가지가 있다.GC(Garbage Collection)ARC(Automatic Reference Counting)보통 JAVA로 개발하면 GC가 알아서 메모리 관리를 해주기 때문에 순환 참조 같은 문제는 고려할 필요가
JSONDecoder를 이용하면 내가 생성한 객체를 쉽게 JSON 형식으로 내보낼 수 있다. 그런데 만약 Codable(Encodable, Decodable)을 채택 할 수 없는 객체의 경우 어떻게 JSON으로 내보 낼 수 있을까?
Foundation 에서 제공하는 FileManager 클래스를 이용하여 파일을 관리 할 수 있다.파일 매니저 클래스는 싱글톤 객체(FileManager.default)를 이용하여 파일과 관련된 모든 작업을 수행한다. 파일 생성, 복사, 이동 등 여러가지의 작업이 가능
컴파일 에러는 없지만, 앱을 실행한 뒤 console에 "whose view is not in the window hierarchy" 로그가 있다. 해당 오류는 UIViewController의 override 함수인 viewDidLoad()에서 모달 뷰를 띄울 때 발생
Coordinator 패턴의 시작 Coordinator란 화면전환을 위한 delegate이다. Stack 방식으로 새로운 화면을 push하고, 이전화면으로 돌아가가기 위해 pop한다. 가장 첫 화면을 기준으로 새로운 화면으로 넘어갈때
REST란? 웹에 존재하는 모든 자원(이미지, 동영상, DB)에 고유한 URL을 부여하여 활용하는 것을 의미한다. 자원을 정의하고 자원에 대한 주소를 지정하는 방법론이다. 자원의 이름(자원의 표
스위프트는 프로토콜 지향 언어(Protocol-Oriented Language)이다. 스위프트는 대부분 구조체로 기본 타입이 구현되어있다. String, Int, Float, Date, URL 등등 익히 사용하고 있는 데이터 타입은 모두 구조체 이며, Array, Se
특정 주소값을 참조하고 있는 객체의 카운트를 세는 역할을 한다. 참조 카운트는 참조 타입에만 해당된다. 구조체나, 열거형과 같은 Value Type에는 해당하지 않는다. 클래스의 인스턴스가 생성되면 Heap에 메모리가 할당된다. 초기 인스턴스의 RC값은
생성시점을 분리한다. RaceCarEngine의 인스턴스를 먼저 생성한후, Vehicle을 생성한다. 외부에서 engine을 생성하고 Viechine에 프로퍼티에 대입하게 된다. 이것이 의존성 주입이다. 두 클래스는 여전히 서로 의존하고 있지만, 더 이상 강한 결합은
MVVM을 한마디로 정의하자면, Model의 데이터를 가공하는 ViewModel과, 그 ViewModel을 보여주는 View로 이루어진 패턴이라고 정의할 수 있다. View는 일반적으로 ViewModel과 1:1 관계를 가진다. 하지만 N:1 관계
UIKit Framework에서는 iOS와 tvOS를 위한 핵심 객체들을 제공해 준다. 이러한 객체들을 사용하여 스크린에 내용을 보여주고, 내용간에 상호작용을 하며, 관리를 할 수 있게 된다. App은 기본적인 행위를 하기위해 UIKit
Observer Pattern이 왜 필요할까? Customer와 Store 두 가지 객체가 있다고 상상해보자. Customer는 곧 출시를 앞둔 특정 상품에 매우 관심이 있다(예를 들자면 iPhone13..ㅎㅎ). 고객은 매일 스토어에 방문할 수 있다. 하지만 여전히
1. UITableViewDataSource 란? data source 객체는 다음과 같은 역할을 한다. - 테이블의 section과 row의 수를 보고한다. - 테이블의 각 행에 대한 셀을 제공한다. - section의 header와 footer를 위한 title
(1) API를 호출해서 (2) JSON 객체를 받아 온 후, (3) Swift data type으로 저장하기 swift에서 JSON객체를 받아와서 Parsing할 수 있는 방법은 3가지가 있다. JSONSerialization, JSONDecoder, SwiftyJS
Not Running : 앱이 시작되지 않은 상태 Inactive : 앱이 foreground 상태로 변경 되는 중. 이벤트를 처리할 수 없음 Active : 앱이 foreground 상태로 변경 됨. 이벤트 처리 가능 Background : 앱이 background상