MVVM(Model, View, Viewmodel)기존의 uikit는 mvc를 따르고 있다.MVC(Model View Controller)Clean Architecture의 핵심은 바깥쪽 레이어가 안쪽 레이어에 대한 정보는 알아도 되지만, 안쪽 레이어는 바깥쪽 레이어에
조건문은 프로그램의 흐름을 제어하는데 사용되는 구문.조건문은 주어진 조건에 따라 코드 블록을 실행하거나 건너뛰는 역할을 진행.스위프트에서 주로 사용되는 조건문은 if문, switch문조건문을 사용하여 프로그램의 로직을 유연하게 제어할 수 있으며, 코드의 실행 흐름을 다
스위프트에서는 'foreEach'반복문을 사용하여 컬렉션의 각 요소에 대해 반복 작업 수행 가능'forEach'는 배열, 딕셔너리, 집하바 등의 컬렉션을 순회하면서 각 요소에 대해 지정된 액션을 실행기본구조컬렉션.forEach { 요소 in // 요소에 대한 작업
Swift에서 Enum은 연관된 값을 그룹화하여 표현하는 데이터 타입입니다.Enum은 주로 서로 연관된 상수 값을 정의하고 사용하는 데 유용합니다.\*\* 코드의 가독성과 안전성을 높이는 데 기여합니다.(협업, 유지보수)enum 이름 { case 케이스1 c
Swift 'for' 반복문은 특정 범위 내에서 코드를 반복 실행하는 데 사용됩니다.'for-in' 반복문은 가장 일반적으로 사용되며, 컬렉션의 각 요소에 대해 반복 작업을 수행하는 데 유용합니다.for 요소 in 컬렉션 { // 요소에 대한 작업 수행}요소는 반
Unwrap은 Swift에서 옵셔널 변수의 값을 안전하게 추출하는 방법을 말합니다.Swift의 옵셔널은 값이 있을 수도 있고 없을 수도 있는 변수를 나타내는 타입입니다.예기치 않은 값이나 널(null) 포인터 예외를 방지하기 위해 사용됩니다.Unwrap을 사용하여 옵셔
클래스와 구조체는 Swift에서 사용되는 두 가지 데이터 타입입니다. 둘 다 멤버 변수와 멤버 함수를 포함하는 자체적인 타입을 정의할 수 있습니다. 구조체 구조체에 기본 생성된 이니셜라이저의 매개변수는 구조체 프로퍼티 이름으로 자동 지정됩니다. 인스턴스가 생성되고 초
클래스와 구조체는 Swift에서 사용되는 두 가지 데이터 타입입니다. 둘 다 멤버 변수와 멤버 함수를 포함하는 자체적인 타입을 정의할 수 있습니다. 구조체 구조체에 기본 생성된 이니셜라이저의 매개변수는 구조체 프로퍼티 이름으로 자동 지정됩니다. 인스턴스가 생성되고 초
프로퍼티 옵저버(Property Observer)는 Swift에서 프로퍼티의 값 변화를 감지하고 그에 대한 추가 동작을 수행하는 기능입니다. 프로퍼티 옵저버는 프로퍼티의 값이 변경되기 전과 후에 특정 코드 불록을 실행할 수 있도록 지원합니다.'willSet' 옵저버 :
Swift에서 함수 매개변수 이름은 함수를 호출할 때 사용되는 인자의 역할을 명확하게 표현하기 위해 사용됩니다. 매개변수 이름은 함수 정의 시에 지정되며, 호출할 때 인자로 전달되는 값에 대한 의미를 이해하기 쉽도록 도와줍니다.Swift에서 함수 매개변수 이름은 기본적
Swift에서 제네릭(Generic)은 함수, 타입, 구조체, 열거형 등을 작성할 때 일반적인 유형 대신 여러 유형에 대해 작동할 수 있도록 유연성을 제공하는 기능입니다. 제네릭은 코드의 재사용성을 높이고 유형 안정성을 강화하기 위해 사용됩니다.제네릭을 사용하면 함수나
클로저(Closure)는 Swift에서 함수와 유사한 개념으로, 일급 객체로서 사용될 수 있는 코드 블록입니다. 클로저는 코드를 캡슐화하여 변수나 상수에 저장하거나 함수의 매개변수로 전달할 수 있습니다. 이를 통해 코드의 재사용성과 유용성을 높일 수 있습니다. >>
매개변수로서 클로저를 사용하는 것은 Swift에서 강력한 기능 중 하나입니다.매개변수로 클로저 타입 정의하기 : 함수 매개변수에 클로저를 전달하기 위해서는 해당 매개변수의 타입으로 클로저를 명시적으로 정의해야 합니다. 클로저 타입은 매개변수 타입으로 '(매개변수 타입)
Swift에서 객체 생성자와 해제자는 클래스의 인스턴스를 초기화하고 메모리를 할당 및 해제하는 역할을 수행하는 특수한 메소드입니다.객체 생성자(Initializer) : 객체 생성자는 클래스의 인스턴스를 초기화하는 역할을 합니다.'init' 키워드를 사용하여 정의하며,
Swift에서 상속은 클래스와 프로토콜 간에 가능합니다. 상속을 통해 기존의 클래스나 프로토콜을 확장하고 새로운 기능을 추가할 수 있습니다.클래스 상속은 부모 클래스로부터 속성과 메소드를 상속받아 새로운 클래스를 정의하는 것을 말합니다.클래스를 상속하기 위해서는 콜론(
Swift에서 딕셔너리는 키(Key)와 값(Value)의 쌍으로 이루어진 데이터 컬렉션입니다.딕셔너리는 키를 사용하여 값에 접근하고 저장하는 데 사용됩니다.딕셔너리는 빠른 검색속도를 제공하며, 특정 키에 해당하는 값을 빠르게 찾을 수 있습니다.딕셔너리는 대괄호(\[])
Swift에서 파이널 클래스는 다른 클래스가 상속을 통해 이 클래스를 확장할 수 없도록 제한하는 특성을 가지는 클래스입니다.파이널 클래스는 더 이상 상속될 수 없으며, 최종적인 구현을 나타내기 위해 사용됩니다.파이널 클래스를 선언하기 위해서는 클래스 정의 앞에 'fin
> 참고(출처) : 개발하는 정대리, 야곰(Swift5), ChatGpt
Swift에서는 컴파일러와 런타임 중 발생하는 여러 가지 종류의 에러를 다룰 수 있습니다.코드 작성 시점에서 발견되는 컴파일 에러와 프로그램 실행 중 발생하는 런타임 에러로 구분 됩니다.문법 에러 : 코드가 올바른 Swift 문법을 따르지 않을 때 발생합니다. 이러한
'mutating'은 Swift에서 구조체('struct') 내부에서 메서드가 자신을 수정할 수 있는지를 나타내는 특별한 키워드입니다. 기본적으로 구조체와 열거형은 값 타입이므로 해당 인스턴스의 프로퍼티를 변경하려면 메서드가 'mutating'으로 표시되어야 합니다.'
Set은 스위프트 언어의 하나의 컬렉션 타입으로, 순서가 없고 중복된 값을 허용하지 않는 집합입니다.Set은 중괄호 '{}'를 사용하여 표현하며, 각 요소는 쉼표로 구분됩니다.순서가 없음 : Set에 저장된 요소들은 순서가 없습니다. 따라서 인덱스를 통해 요소에 접근할
스위프트에서 구조체는 메소드를 가질 수 있습니다. 구조체의 메소드는 해당 구조체 내에서 특정 작업을 수행하는 함수입니다.메소드는 구조체 내부의 속성에 액세스할 수 있으며, 구조체의 인스턴스를 통해 호출됩니다.struct MyStruct { var value: In
프로토콜은 Swift에서 인터페이스를 정의하는 방법입니다. (약속)명명 규칙 > 일반적으로(프로토콜은 특정 역할을 수행하기 위해 필요한 메서드, 프로퍼티, 이니셜라이저 등의 요구사항을 정의합니다.클래스, 구조체, 열거형은 프로토콜을 채택하여 프로토콜에 정의된 요구사항을
스위프트에서는 프로토콜 상속(Protocol Inheritance)을 통해 하나 이상의 프로토콜을 상속받을 수 있습니다.프로토콜 상속을 사용하면 다른 프로토콜의 요구사항을 상속하고, 추가적인 요구사항을 정의할 수 있습니다.protocol ProtocolA { //
Swift에서 프로토콜 확장을 사용하면 기존 프로토콜에 새로운 기능을 추가할 수 있습니다.프로토콜 확장은 기존 프로토콜을 채택한 모든 타입에 대해 확장이 적용되므로, 기존 타입을 수정하지 않고도 기능을 추가할 수 있습니다.protocol MyProtocol { /
Swift에서 프로토콜의 'associatedType'은 프로토콜에서 사용되는 연관타입을 선언하는 데 사용됩니다. 연관 타입은 프로토콜 내에서 사용되는 일종의 플레이스홀더로, 실제 구현하는 타입에 따라 결정됩니다. 연관 타입은 제네릭과 비슷한 개념이지만, 특정한 타입
스위프트에서는 typealias를 사용하여 타입에 대한 별칭을 만들 수 있습니다.typealias는 기존 타입에 대해 더 읽기 쉬운 이름을 지정하는 데 사용됩니다.typealias NewName = ExistingTypeNewName은 ExistingType에 대한 새
스위프트에서 'lazy' 키워드는 속성을 "지연 계산"하는 데 사용됩니다.해당 속성에 청므으로 접근하는 시점까지 초기화가 지연되어 계산되지 않습니다.필요한 시점에만 값을 계산하고, 불필요한 자원 낭비를 줄일 수 있습니다.초기화 지연 : 'lazy' 키워드로 선언된 속성
고차함수 - Higher Order Functions고차함수는 함수를 인자로 받거나 함수를 반환하는 함수를 말합니다.스위프트에서는 여러가지 고차함수가 제공되고 있으며, 일반적인 고차함수로는 map, filter, reduce가 있습니다. 컬렉션에 대해 작업을 수행하고
고차함수인 'sort'와 'sorted'는 스위프트의 배열 정렬에 사용되는 함수입니다.이 두 함수는 배열의 요소를 정렬하는데 사용되며, 요소의 순서를 기준으로 오름차순 또는 내림차순으로 정렬할수 있습니다.sort 함수는 배열을 정렬하며, 배열 자체를 수정합니다. 즉,
스위프트에서 private(set)은 변수나 속성을 정의할 때 사용하는 액세스 제어자 중 하나입니다.액세스 제어자는 해당 변수나 속성이 어디서 접근 가능한지를 제어하는 역할을 합니다.private(set)은 두가지 목적을 가지고 있습니다.private(set)으로 선언
forEach와 enumerated는 스위프트에서 배열과 컬렉션을 다루는 데에 유용한 기능들입니다.forEach는 배열 또는 컬렉션의 모든 요소를 반복하면서 각 요소에 대해 특정 작업을 수행할 때 사용됩니다.배열의 모든 요소를 순회하며 각 요소에 대해 주어진 클로저를
map은 스위프트에서 배열을 변환할 때 유용한 고차함수 중 하나입니다.map 함수는 배열의 각 원소를 특정 클로저를 사용하여 변환하고, 그 결과로 새로운 배열을 생성합니다.새로운 배열은 원본 배열과 동일한 길이를 가지며, 각 원소는 입력 배열의 원소를 변환한 값으로 구
CompactMap 스위프트에서 배열 또는 다른 컬렉션을 변환하거나 필터링하는 데 사용되는 함수 중 하나입니다. 각 요소에 대해 변환 클로저를 실행하고, 변환 결과 중에 nil이 아닌 값들로 이루어진 새로운 배열을 반환합니다. map 과의 주요 차이점은 compactM
flatMap은 스위프트에서 배열 또는 다른 컬렉션을 변환하거나 평탄화하는 데 사용되는 함수 중 하나입니다.이 함수는 각 요소에 대해 변환 클로저를 실행하고, 변환 결과 중에서 nil이 아닌 값들을 추출하여 하나의 평탄한 배열로 반환합니다.let nestedArray
스위프트에서 class func 와 static func 는 둘다 클래스 레벨에서 정의되는 메서드입니다.두 가지의 주요 차이점은 상속과 관련이 있습니다.class func 는 클래스 계층 구조에서 메서드가 상속되고 재정의 될 수 있음을 나타냅니다.서브클래스에서 clas
스위프트에서 딕셔너리 grouping 기능은 컬렉션 내의 항목을 특정 기준으로 그룹화하는 데 사용됩니다.딕셔너리 grouping 함수는 새로운 딕셔너리를 생성하며, 각 그룹의 키는 지정된 기준에 따라 생성됩니다.let values = 1, 2, 3, 4, 5, 6, 7
의존성 주입(DI)은 소프트웨어 디자인 패턴 중 하나로, 컴포넌트 간의 의존 관계를 느슨하게 결합시키기 위해 사용되는 기법입니다.하나의 클래스나 모듈이 다른 클래스나 모듈의 기능을 사용하거나 의존하는 경우 해당 클래스나 모듈은 의존성을 가지고 있습니다. 이러한 의존성은
스위프트에서의 getter와 setter는 프로퍼티 값을 가져오거나 설정하는 데 사용되는 메커니즘입니다. 프로퍼티에 대한 접근을 더 유연하게 제어하고, 값이 설정되거나 가져올 때 추가 작업을 수행할 수 있는 기회를 제공합니다. Getter는 프로퍼티의 값을 반환하는 역
Codable은 Swift에서 사용되는 프로토콜로, 데이터를 인코딩하거나 디코딩할 때 사용되는 일련의 기능을 정의합니다. Codable을 채택한 타입은 JSON, Property List 및 다른 형식의 데이터를 쉽게 변환하고 다룰 수 있습니다.Encodable은 타입
멀티트레일링 클로저는 스위프트에서 함수의 마지막 매개변수로 전달되는 클로저가 여러 개일 때,가독성 있는 문법을 사용하여 전달하는 방법입니다. 함수 호출 시 클로저를 괄호 밖으로 빼서 사용합니다.func performOperations(a: Int, b: Int, ope
스위프트에서 convenience init(= 추가생성자)은 초기화 과정을 더 편리하게 만들기 위해 사용되는 특별한 형태의 이니셜라이저입니다.convenience init을 사용하여 다른 이니셜라이저를 호출하거나 기존의 이니셜라이저를 더 간결하게 구현할 수 있습니다.기
스위프트에서 convenience init(= 추가생성자)은 초기화 과정을 더 편리하게 만들기 위해 사용되는 특별한 형태의 이니셜라이저입니다.convenience init을 사용하여 다른 이니셜라이저를 호출하거나 기존의 이니셜라이저를 더 간결하게 구현할 수 있습니다.기
빌더 패턴은 객체 생성 과정을 추상화하고 복잡한 객체를 구축하기 위한 디자인 패턴 중 하나입니다.이 패턴은 생성자의 매개변수가 많거나 복잡한 경우, 객체 생성을 더 편리하게 만들어주며 가독성을 높일 수 있는 방법을 제공합니다.객체가 많은 속성을 가지고 복잡한 초기화 과
스위프트에서 콜렉션을 합치는 방법은 다양한 메서드와 연산자를 사용하여 수행할 수 있습니다.주로 배열과 딕셔너리를 합치는 경우에 많이 사용되며, 이를 통해 새로운 콜렉션을 생성하거나 기존 콜렉션을 수정할 수 있습니다.참고(출처) : 개발하는 정대리, 야곰(Swift5)
reduce는 스위프트의 고차함수 중 하나로, 컬렉션(배열, 딕셔너리, 세트)의 요소들을 결합하거나 축소하여 하나의 결과값을 생성하는 함수입니다.주로 초기값과 클로저를 활용하여 컬렉션 내의 요소들을 반복하면서 연산을 수행합니다.initialResult : 연산의 초기값
콜렉션 간 변형을 통해 타입 캐스팅을 수행할 수 있습니다.타입 캐스팅은 컬렉션의 요소들을 다른 타입으로 변환하는 작업을 의미합니다.참고(출처) : 개발하는 정대리, 야곰(Swift5)
옵셔널 체이닝은 스위프트에서 옵셔널 값을 가진 여러 개의 프로퍼티나 메서드 호출을 안전하게 연결하여 사용하는 방법을 말합니다.옵셔널 체이닝을 사용하면 중간에 하나라도 nil이면 전체 체인이 중단되고 nil을 반환하므로 코드에서 일일이 nil 체크를 할 필요가 없어집니다
Equatable은 스위프트의 프로토콜 중 하나로, 두 개의 값이 같은지 비교하기 위해 사용되는 프로토콜입니다.Equatable 프로토콜을 준수하는 타입은 '=='연산자를 사용하여 두 값을 비교할 수 있습니다.Equatable을 준수하는 타입을 정의할 때는 두 값이 같
zip은 스위프트의 내장 함수 중 하나로, 두 개 이상의 시퀀스를 조합하여 하나의 새로운 시퀀스를 생성하는 역할을 합니다. zip함수를 사용하면 여러 시퀀스들을 병렬로 순회하며 요소들을 조홥할 수 있습니다. zip은 각 시퀀스에서 동일한 인덱스의 요소들을 묶어 새로운
static func과 final class func는 스위프트 언어에서 사용되는 특별한 종류의 메서드 선언입니다.static func은 클래스나 구조체의 타입 자체에 속하는 정적 메서드를 선언하라 때 사용됩니다.해당 메서드는 타입 멤버로써 인스턴스를 생성하지 않고도
스위프트에서 Range는 연속적인 값의 범위를 나타내는 타입입니다. Range는 일반범위와 닫힌 범위로 나눌 수 있습니다. 주로 반복문이나 컬렉션에서 특정 범위의 값들을 다루거나 추출할때 사용됩니다.문자열에서도 일부 문자들을 추출하거나 처리할 수 있습니다.참고(출처)
스위프트에서의 open은 접근 제어 수준 중 하나로, 클래스와 클래스 멤버를 상속받는 모듈 외부에서도 접근할 수 있도록 해주는 키워드입니다. open 접근 제어 수준은 가장 높은 접근 권한을 제공하며, 외부 모듈에서 클래스를 상속하고 해당 클래스의 메서드와 프로퍼티를
스위프트에서 struct는 값 타입을 정의할 때 사용되는 키워드입니다. struct는 클래스와 달리 값 복사가 이루어지는 특성을 가지며, 기본 생성자를 자동으로 제공합니다.기본 생성자는 모든 프로퍼티에 초기값이 제공되어 있거나, 옵셔널 프로퍼티가 있는 경우 자동으로 생
싱글턴 패턴은 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 어떤 클래스가 단 하나의 인스턴스만을 생성하도록 보장하는 패턴입니다. 이 인스턴스는 어디서든 접근 가능하며, 전역적으로 공유되는 자원을 관리하거나 중복 생성을 피하기 위해 사용됩니다. 위의 코드
스위프트에서의 toggle은 부울 값을 반전시키는 메서드입니다. toggle은 주로 불리언 변수나 프로퍼티의 값을 반전시키는 데 사용됩니다. isEnabled 프로퍼티의 값을 toggle 메서드를 호출함으로써 반전시킬 수 있습니다. Collection 프로토콜을
스위프트에서 프로토콜 조건은 제네릭 타입의 제약 조건을 정의하는 데 사용되는 개념입니다.제네릭 함수나 타입을 선언할 때, 특정 프로토콜을 준수하는 타입만을 제네릭으로 받도록 제한하고 싶을 때 사용됩니다.<T: SomeProtocol>와 <T: AnotherP
스위프트에서는 다양한 방법으로 변수나 상수의 자료형을 체크할 수 있습니다.'is' 연산자는 변수나 상수가 특정 자료형과 호환되는지 확인하는데 사용됩니다. 이 연산자는 부울 값을 반환합니다.'as'연산자는 변수나 상수의 자료형을 변환하는데 사용됩니다. 이 연산자를 사용할
선택지를 사용해서, 케이스 별로 정리하는 방법선택지를 케이스 별로 대응각각의 케이스 별로 해야할 것들 대응if 문으로도 똑같이 만들 수 있음선택지의 제약 차이모든 선택지를 구현 해주어야 함
위임자대리자대리자가 할 것 : 프로토콜 -> 대리자가 구현위임을 받으면 일을 해야함.
사람의 인터페이스에 대한 가이드라인HIG는 어떤 것이고 왜 읽어야 하는가인터페이스 1\. 키오스크리모컨아이폰\-> 즉, 사람에게 편한 인터페이스가 필요출처. FastCampus가이드라인 제공디자인 된 사용자 경험많은 하드웨어와 컴포넌트개발을 할 때 의도?
특징SWift 언어로 모든 플랫폼에서 앱에 대한 UI와 동작을 선언해주는 프레임워크 (아이폰, 아이패드, macOS, 비전OS)상태 중심 프레임워크Xcode 12, ios 13 이상부터 지원Less code, Better code, EveryWhere(어디서든 적은 코
SwiftUI에서 상태를 처리하는 방법뷰의 상태를 저장하는 프로퍼티로 상태 관리 주체는 해당 뷰기본적으로 Private 선언, 다른 뷰와 값을 소통하려면 Binding이용값이 변경될 때마다 UI 업데이트뷰의 상태를 바인딩하는 방법상위 @State 변수 전달받아 하위 뷰
캡쳐, 재생, 편집 및 export 등의 클래스를 제공카메라 장치 제어는 카메라 입력을 위한 캡쳐 세션을 제공하고 캡쳐 디바이스를 사용해 사진/비디오 캡쳐에 대한 카메라 제어를 할 수 있음오디오 처리는 재생/녹음/혼합 및 다양한 이펙트 적용. 시스템 오디오 상호작용은