본문 바로가기

TIL

(22)
URL Session URLSession 네트워크 데이터 전송 작업을 조정하는 객체 HTTP 프로토콜을 사용하여 앱 - 서버간 데이터를 통신을 위해 애플이 제공하는 API 앱은 하나 이상의 URLSession 인스턴스를 생성하여 각자 데이터 전송 작업 그룹을 담당 HTTP 포함한 프로토콜 몇가지 지원 인증, 쿠키 관리, 캐시 관리 등을 지원 request, response 구조를 갖음 Configuration 결정 → Session 생성 → Request용 URL 설정 → Task 결정 및 작성 URLSessionConfiguration shared session : 기본 요청에 대한 공통 session 구성 객체 customizable session과 달리 사용자 정의 불가능 간단하게 사용 가능하지만 delegate, co..
estimatedItemSize / itemSize TRANSLATE with x English Arabic Hebrew Polish Bulgarian Hindi Portuguese Catalan Hmong Daw Romanian Chinese Simplified Hungarian Russian Chinese Traditional Indonesian Slovak Czech Italian Slovenian Danish Japanese Spanish Dutch Klingon Swedish English Korean Thai Estonian Latvian Turkish Finnish Lithuanian Ukrainian French Malay Urdu German Maltese Vietnamese Greek Norwegian Welsh Haitian Creol..
UIApplicationDelegate / UISceneDelegate UIApplicationDelegate 앱의 공유 동작을 관리하는 방법 앱의 루트 객체이며 UIApplivation과 함께 시스템 상호 작용을 관리 앱 시작 주기 초기에 생성 앱의 중앙데이터 구조 초기화 - 데이터 연결 앱의 씬 구성 앱 외부의 알림에 응답 - 메모리 부족, 다운로드 완료 등 앱 씬, 뷰, 뷰컨트롤러에 국한되지 않고 앱 내부 전체의 이벤트에 응답 Apple 푸시 알림서비스와 같은 것을 등록 lunch Story board - Specifying your app’s launch screen Make your iOS app launch experience faster and more responsive by customizing a launch screen. iOS12 이전은 백,포그라운드 ..
View 갈아끼우기 loadView ViewController의 뷰를 만드는 메서드 UIViewController Lifecylce에 영향을 미치는 메서드이기 때문에 해당 메서드 사용 시 유의가 필요함 ViewController는 View를 요청 시 View가 nil일 때 loadView 메서드를 호출하여 View를 로드함 loadView 호출 시점에서 nib 파일이 있는 경우 해당 nib 파일을 호출함 스토리보드(Interface Builder: 마우스뷰를 그리는 경우)를 통해 뷰를 생성한 경우 이 메서드를 override하면 안됨 Custom시 super 호출하지 않아야 함 ViewController init에서 view를 갈아끼우는 경우 loadView가 호출되지 않음 override init(nibName nibNa..
Access Control 접근제어 캡슐화와 은닉화 → 불필요한 접근으로 의도치 않은 결과를 초래 하거나 꼭 필요한 부분만 제공해야하는데 전체 코드가 노출될 가능성이 있을 때 접근제어를 이용 모듈 배포할 코드의 묶음 단위 → 현재 프로젝트 하나 단위 하나의 프레임워크(Framework)나 라이브러리(Library) 또는 애플리케이션(Application) import로 부른다 open : 클래스를 개방 접근수준으로 명시하는 것은 그 클래스를 다른 모듈에서도 부모클래스로 사용 하겠다는 목적으로 클래스를 설계하고 코드를 작성했음을 의미합니다.→ 클래스를 상속받거나 재정의 할 수 없도록 막고싶다면 public 로 정의 → 라이브러리 사용자(프로그래머)가 상속받아 사용하면 좋겠다거나 상속 후 재정의하여 사용하면 좋겠다는 생각을 한다면 open 으..
MVC 초기 MVC 기존의 코드는 UI 컴포넌트 별로 분리를 하였기 때문에, 프레젠테이션 계층이 분리가 되어있지 않았다. 이러한 분리는 유저 멘탈모델과 컴퓨터의 모델 간의 괴리를 만들어 내었다. MVC는 유저 멘탈모델과 프레젠테이션을 분리하여 유저 멘탈모델과 컴튜퍼 모델을 일치시키고자 등장하였다. 에디터(Editor) : 프리젠테이션 계층을 담당 컨트롤러(Controller) : 입력 담당 뷰(View) : 출력 담당 모델(Model) : 유저 멘탈모델 유저 멘탈모델이란? 유저가 앱이 이렇게 되어있을꺼다 생각하는 것 즉 특정 주제에 대한 사용자의 행동 친화도를 하나의 모델로 정리한 것 SmallTalk MVC 옵저버 패턴으로 뷰가 모델의 변경을 감시 Model의 변화가 View에 영향을 끼치게되는 단점이 존재 ..
Architecture Pattern 소프트웨어 설계 설계란 비용을 줄이기 위해 하는 것 소프트웨어 설계는 역할, 이름, 책임을 주는 것 → 여러 특성을 가진 대상을 이해하기 위해선 관심사의 분리의 원칙에 따라 한번에 한자기의 측면을 집중하여 분석해야함 Architecture Pattern 아키텍쳐란 소프트웨어의 개략적인 계층 분리 방법 패턴이란 문제에 대한 일반적이고 재사용 가능한 해결 방법 → 즉, 아키텍쳐 패턴이란 소프트웨어 계층 분리 방법도 세부 내용을 패턴화하여 재사용하는 것 GUI 아키텍쳐 : PDS(Presentation Domain Separation)을 기본으로 계층 분리→ GUI 아키텍쳐에는 MVC, MVP, MVVM, Flux가 있음 → PDS란 시스템 본래의 관심사항인 도메인과 모델을 UI인 View로부터 분리시키는 것..
Optional enum Optional: ExpressibleByNilLiteral { case none case some(Wrapped) } 해당 값이 비어있을 수 있음을 명시할 수 있음 옵셔널 타입의 경우 nil을 할당할 수 있음 옵셔널 타입의 기본값을 제공하지 않으면 자동으로 nil이 기본값 옵셔널 타입은 non-옵셔널 타입과 혼재하여 사용할 수 없음 옵셔널 타입은 2가지의 case를 갖는 열거형 // 아래와 같이 사용 가능 let number: Int? = Optional.some(42) let noNumber: Int? = Optional.none print(noNumber == nil) // Prints "true" → none : nil과 동일 / some(Wrapped) : wrapping된 값을 저장 ..

728x90