VegaScrollFlowLayout Collection View 를 Scroll 할 때 효과를 주기 위해 사용한다. Cocoa Pod Install Xcode Example Values minimumLineSpacing : Cell 간의 위아래 간격 (CGFloat) minimumInteritemSpacing : Cell 간의 옆 간격 (CGFloa...
MSPeekCollectionViewDelegateImplementation 갤러리에서 사진 넘기는 듯한 효과 넣기 위해 사용한다. Cocoa Pod Install Xcode Example Values cellSpacing : 현재 화면에 보이는 양옆 아이템과의 거리 cellPeekWidth : 현재 화면에 보이는 양옆 아이템 가로 길이 minimu...
BetterSegmentedControl Customize 된 Segmented Control Cocoa Pod Install Xcode Example Values index : 선택된 Segmented Control 의 Index
BSImagePicker 갤러리에서 사진 선택할 때 기본적으로 한번에 사진 하나만 선택 가능하도록 되어 있지만 한번에 사진 여러개 선택 가능하도록 하기 위해 사용한다. Cocoa Pod Install Xcode Example Values modalPresentationStyle : 화면에 보이는 형태 settings.selection.max : 한번에...
Cosmos 후기 등을 쓸 때 Slide 해서 별점 설정하는 기능 구현을 위해 사용한다. Cocoa Pod Install Xcode Example Values rating : 별점 값 text : 별점 옆에 나타날 글씨 settings.starSize : 별 크기 settings.disablePanGestures : Pan 제스쳐를 무시할지 여부 (특...
Map Kit iOS 앱 개발 도중 Apple Map 을 사용하기 위해 필요하다. Xcode Example
SwiftUI 선언적 구문을 사용하기 때문에 사용자 인터페이스의 기능을 명시하기만 하면 된다. 런타임에서 시스템은 부드러운 움직임을 만들기 위해 필요한 모든 단계를 다룬다. 앱의 안정성을 위해 방해 프로세스도 처리한다. 어떤 블로그에서는 SwiftUI의 단점으로 MapKit를 사용하지 못한다는 것을 꼽았는데 확인해보니 import MapKit한 후에 Map...
MVC Model + View + Controller 구조 Model 앱의 데이터나 비즈니스 로직을 관리한다. View 데이터의 시각적 표현을 제공한다. Controller Model과 View의 연결 고리 같은 역할 (적절한 시간 내에 Model과 View 사이에서 데이터 전달하는 역할 / View로부터 사용자의 행동을 받아와서 Model에게 전달...
MVVM Model + View + View Model의 구조 MVC에 Controller가 있다면 MVVM에는 Controller 대신 View Model이 있다. 애플리케이션 개발에 많이 쓰이는 디자인 패턴 Model MVC의 Model과 마찬가지로 앱의 데이터나 비즈니스 로직을 관리한다. View와 View Model을 전혀 신경쓰지 않아도 된다. ...
코드 더 알아봐야할 것 최신 버전이 아닌 경우 앱스토어로 연결되도록 구현하는 방법
Memory 프로그램이 실행되면 운영체제는 메모리 (RAM) 에 이 프로그램을 위한 공간을 할당해준다. 프로그램을 위한 공간은 4가지로 나누어져 있는데, 이는 코드 (Code) / 데이터 (Data) / 힙 (Heap) / 스택 (Stack) 이다. Code 우리가 작성한 소스 코드가 기계어 (컴퓨터가 읽을 수 있는 가장 밑단의 언어이며, 0과 1로만 이...
ARC 란 ? Automatic Reference Counting 메모리 영역 4가지 (코드 / 데이터 / 힙 / 스택) 중 힙 영역을 관리하는 것 (힙 영역을 관리하는 방법에는 GC와 RC가 있다.) 앱의 메모리 사용을 추적하고 관리하기 위해 사용한다. 클래스 인스턴스가 더 이상 필요하지 않게 되면 메모리를 자동으로 해제해준다. GC Garbage Co...
Strong 강한 참조 인스턴스의 주소값이 변수에 할당될 때 RC가 증가하는 경우 평소에 내가 인스턴스 생성하고 사용하던 것이 다 강한 참조를 한 것이다. (기본값이 strong이기 때문이다.) [코드 1], [코드 2] 를 실행하면 강한 참조를 한 것이다. Circular Reference 순환 참조 ARC 의 단점 영구적으로 메모리가 해제되지 않을 ...
💻 iOS Bounds vs Frame ? Bounds 본인의 좌표계 기준 The bounds rectangle, which describes the view's location and size in its own coordinate system.) Frame superview의 좌표계 기준 The frame rectangle, which descr...
Struct 내가 정리한 'Struct' 상속 클래스를 받아올 때 사용하는 단어 부모 클래스에 있는 모든 기능을 자식 클래스가 물려 받겠다는 의미 [코드 1] : 'ViewController' 라는 클래스 (자식 클래스) 가 'UIViewController' 라는 클래스 (부모 클래스) 를 상속받는 것이기 때문에 'ViewController' 클래스는 ...
Pure Function 순수 함수 같은 input 에 대해서 항상 같은 output 이 나오는 함수 외부 상태에 의존적이지 않다. 어떠한 Side-effect 도 발생시키지 않는다. 쓰레드에 안전하고 병렬적인 계산이 가능하다. 장점 테스트가 용이하다. 재사용성이 높아진다. 예측 가능성이 높아진다. Side-effect 함수형 프로그래밍에서는 잘못된 코...
Access Control 접근 제어 다른 소스 파일 및 모듈의 코드에서 코드의 일부에 대한 접근을 제한하는 것 (불필요한 접근 방지) 개별 타입 (class, struct, enum) 뿐 만 아니라 해당 타입에 속하는 프로퍼티, 메소드, 이니셜라이저 및 첨자 (subscripts) 에 대해 특정 접근 레벨을 지정할 수 있다. 프로토콜은 전역 상수, 변수 ...
Struct 구조체 값 타입 (value type / call by value) 인스턴스의 값 (프로퍼티) 을 저장하거나 기능 (메소드) 을 제공하고 이를 캡슐화할 수 있는 타입 Swift 대부분의 큰 뼈대로 쓰이는데, 대표적인 예시로 데이터 타입들이 struct 로 이루어져 있다는 것을 들 수 있다. (실제로 Int, Double 등의 데이터 타입에 co...
Class 참조 타입 (reference type / call by reference) 단일 상속만 가능하다. iOS Framework 의 대부분을 구성하고 있다. extension 이 가능하다. 힙 영역에 저장된다. 서로 다른 타입들을 하나로 묶을 수 있고, 묶인 자료형들을 새로운 타입처럼 사용할 수 있다. 내부에서 프로퍼티와 메소드를 정의할 수 있다. ...
Protocol 특정 역할을 수행하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 구조체, 클래스, 열거형은 프로토콜을 채택 (Adopt) 해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. 어떤 프로토콜의 요구사항을 모두 따르는 것을 그 프로토콜을 준수 (Conform) 한다고 표현한다. 프로토콜의 요구사항을...
Extension 모든 타입 (구조체, 클래스, 열거형, 프로토콜, 제네릭 타입) 에 새로운 기능을 추가할 수 있는 기능 기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없어도 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다. 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 기존 타입에 기능을 ...
Protocol Oriented Language 프로토콜 지향 언어 ex. Swift Swift Swift 의 표준 라이브러리에서 타입 정의 부분을 보면 대부분이 구조체로 구현되어 있는 것을 볼 수 있다. (클래스로 구현된 타입도 있기는 하지만 드물다.) Swift 가 상속 가능한 클래스 대신 상속 불가능한 구조체로도 다양한 공통 기능 구현이 가능했던 이...
UIKit 프레임워크 중 하나 사용자 인터페이스를 구성하는데 필수적인 요소 iOS 또느 tvOS 앱용 그래픽 이벤트 기반 사용자 인터페이스 구성 및 관리 iOS 또는 tvOS 앱에 필요한 인프라 제공 인터페이스를 구현하기 위한 window 와 view 구조 제공 멀티 터치와 앱에 입력되는 다른 타입들을 전달해주기 위한 이벤트 핸들링 인프라 제공 사용자, 시...
Foundation 프레임워크 중 하나 앱의 기본 계층의 기능을 정의하기 위해 필수적인 데이터 타입, 콜렉션, 운영체제 서비스에 접근한다. 데이터 저장과 지속성, 텍스트 처리 과정, 날짜와 시간 계산, 정렬과 필터링, 네트워킹을 포함한 기능의 기본 계층을 제공한다. Foundation 에 정의된 클래스, 프로토콜, 데이터 타입들은 macOS, iOS, wa...
AppDelegate.swift 프로젝트를 만들면 SceneDelegate.swift 파일과 함께 자동으로 생성되는 파일 (위 사진 참고) AppDelegate 클래스 정의 부분이 포함되어 있는 파일 (위 사진 참고) Entry Point (@main 키워드) 와 입력 이벤트를 앱에 전달하는 Run Loop 를 생성한다. 생명 주기를 관리한다. UIRe...
GCD Grand Central Dispatch C 기반 Background 에서 Thread 를 관리하면서 동시적으로 작업을 실행시키는 저수준 API 를 제공하는 라이브러리 앱을 실행하면 시스템에서 기본적으로 2개의 Queue (Main Queue & Global Queue) 를 만들어 준다. Dispatch Queue FIFO (First In Fir...
View Controller 앱들을 이루고 있는 것 iOS 는 Navigation Controller 를 사용해 화면을 전환할 때 LIFO (Last In First Out) 구조 (= Stack 구조) 를 사용한다. (화면이 하나만 존재하는 앱인 경우에는 Navigation Controller 를 사용하지 않지만 화면이 하나뿐인 앱은 거의 없기 때문에 N...
App Bundle 개발자가 생성하는 가장 일반적인 유형의 번들 어플리케이션의 성공적인 작동에 필요한 모든 것들을 저장한다. iOS 냐 macOS 냐에 따라 번들 구조가 다르지만 사용법은 같다. Bundle 3가지 (App Bundle / Framework Bundle / Loadable Bundle) 로 나눌 수 있다. Bundle 의 컨텐츠는 Bund...
UIViewController UIViewController 의 역할 View 내용 업데이트 View 와 사용자 사이의 상호 작용에 응답 기본 데이터의 변경에 대한 응답으로 View 내용 업데이트 View 크기 조정 및 인터페이스의 레이아웃 관리 UIViewController 의 Container View Controller 종류 UINavigationC...
UINavigationController 계층적인 내용을 다루기 위한 stack 기반 체계를 정의하는 컨테이너 뷰 컨트롤러 네비게이션 인터페이스에서 하나 이상의 자식 뷰 컨트롤러를 관리하는 컨테이너 뷰 컨트롤러 한번에 하나의 자식 뷰 컨트롤러만 보일 수 있다. 뷰 컨트롤러에 있는 아이템을 선택하면 새로운 뷰 컨트롤러가 push 되고, 그렇기 때문에 이전 뷰...