스파르타코딩 내일배움캠프를 통해 iOS 앱 개발을 배우고 있다. 비전공자인 나는 코딩 자체를 처음 접하는 것이라 처음부터 배워가야 하고, 빠르게 따라가고 싶어서 마음은 급하고 이해는 안되지만!! 오늘부터 하나씩 천천히 배운 것을 정리하면서 공부해보려고 한다. 몇 달 뒤, 몇 년 뒤에...
기본 명명 규칙 함수, 메서드, 인스턴스 이름은 첫 글자를 소문자로 사용 (소문자 카멜케이스) 클래스, 구조체, 익스텐션, 프로토콜, 열거형 이름은 타입의 이름이므로 첫 글자를 대문자로 사용 (대문자 카멜케이스) 대소문자를 구별 (Var와 var를 다르게 인식) 변수
산술 연산자 사칙 연산에 대한 연산자 비교 연산자 비교 연산자의 연산 결과는 항상 Bool 타입의 값으로 표시됨 논리 연산자 연산 결과 항상 Bool 타입의 값으로 표시된다는 점에서 비교 연산자와 동일 값의 크기를 비교하는 비교 연산자와는 달리 주어진 값의 논리 비
반복문 주어진 조건에 의해 특정 코드 블록을 반복적으로 실행 할 수 있게 해주는 구문이다. 루프(Loop) 코드 블록의 반복 루프 횟수 반복되는 횟수 💡 반복문 내에서 흐름을 제어하고자 할 때에는 break 구문, continue 구문을 사용한다. (제어 전달문
조건문 (분기문) 프로그램에서 하나 또는 그 이상의 조건값에 따라 특정 구문을 실행하도록 프로그램의 흐름을 분기하는 역할 1. if 구문 if 구문 조건식의 평가 결과가 true일 때만 코드 블록 내부의 구문을 실행한다. false면 코드 블록을 빠져나가 if 블록
제어 전달문 코드의 한 부분에서 다른 부분으로 제어 흐름을 전달하여 코드가 실행되는 순서를 변경해주는 구문 1. break 구문 switch 구문에서 개별 case 블록에 사용되어 전체 switch 구문의 실행을 종료한다. 반복문에서는 반복 실행 블록에 사용되어 조건
objective-C (Foundation Collection) 클래스, 참조타입, 객체만 저장가능, 타입 상관없이 저장 가능 (NSArray, NSDictionary, NSSet) Swift Collection 구조체, 값타입, 객체와 값 저장가능, 하나의 타입만
옵셔널 타입 nil을 사용할 수 있는 타입과 사용할 수 없는 타입으로 구분되는데, 사용할 수 있는 타입이 옵셔널 타입이다. 옵셔널 타입만 nil을 반환할 수 있다. (오류가 발생할 가능성이 조금이라도 있다면 모두 옵셔널 타입으로 정의해야함) 💡 nil: 값이 없음을
함수 일반 함수: 프로그래밍 언어나 프레임워크 수준에서 제공하는 함수, 기본적인 데이터의 처리나 연산 등을 수행하기 위한 목적, ex:print() 사용자 정의 함수: 필요한 함수를 직접 만들어서 사용하는 것 함수 사용의 장점 동일한 코드가 여러 곳에서 사용될 때 함
일급 객체로서의 함수의 특징 1. 변수나 상수에 함수 대입 가능 함수타입 : 변수에 함수를 대입하면 그 변수는 함수 타입이 된다. (함수 타입은 함수의 형태를 축약한 형태로 사용한다.) 2. 함수의 반환 타입으로 함수 사용 가능 3. 함수의 인자값으로 함수 사용
Closure Closure: 일회용 함수를 작성할 수 있는 구문 일회용함수 (익명함수): 한 번만 사용할 구문들의 집합이면서, 그 형식은 함수로 작성되어야 하는 제약조건이 있을 때 만들어 사용할 수 있는 함수 클로저는 외부 함수 내에서 내부 함수를 반환하고, 이
고차함수 다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수 map, filter, reduce 함수는 스위프트 표준 라이브러리의 컨테이너 타입 (Array, Set, Dictionary 등)에 구현되어있다. 1. map 컬렉션 내부의 기존 데이터
💡 스위프트는 객체지향 언어이다. 객체를 만들어내는 주요 대상이 구조체와 클래스이다. 구조체와 클래스의 정의 구문 초기화 옵셔널 타입으로 선언되지 않은 프로퍼티는 명시적으로 초기화 해야한다. 프로퍼티를 선언하면서 동시에 초기값을 지정 초기화 메서드 내에서 프로퍼티
메서드 구조체나 클래스 내에서 정의된 함수, 특정 타입의 객체 내부에서 사용하는 함수 함수는 독립적인 기능 구현을 위해 만들어지지만, 메서드는 하나의 객체 내에 정의된 다른 메서드들과 서로 협력하여 함수적 기능을 수행한다. 인스턴스 메서드 클래스, 구조체 또는 열거형
구조체의 값 전달 방식 값 타입 스위프트에서 제공하는 기본 자료형(정수, 문자열, 배열, 딕셔너리 등)과 열거형, 구조체는 인스턴스를 생성한 후 변수나 상수에 할당하거나 함수의 인자값으로 전달할 때 값을 복사하여 전달한다. 이 말은 우리가 생성하는 모든 구조체 인스턴스
클래스의 상속 클래스가(subclass) 다른 클래스에서(superclass) 정의된 프로퍼티나 메서드를 물려받아 사용하는 것 Overriding 자식 클래스는 일반적으로 부모 클래스로부터 상속받은 프로퍼티나 메서드를 그대로 사용하지만, 필요에 의해 이를 다시 구현
mutating 스위프트에서 구조체와 열거형은 값 타입이다. 값 타입인 구조체에서는 인스턴스 메소드 내에서 프로퍼티들을 수정할 수 없다. 따라서 이러한 프로퍼티들을 구조체 안의 메소드에서 수정하려면 mutating이라는 키워드를 사용해야한다.
Subscript 클래스, 구조체, 열거형에서 시퀀스의 멤버 요소에 접근하기 위한 바로가기 첨자 💡 왜 서브스크립트를 호출할 당시 (index: ), [key: ]로 호출하지 않는지? 일반 메소드라면 외부 매개변수로 호출해야하지만 subscipt는 파라미터 선언 당
Extension extension이란 키워드를 사용하여 기존 클래스, 구조체, 열거형 타입에 새로운 Property, Method, Initializer 등을 확장하는 것 원본 타입에 접근하지 못하는 타입들도 확장해서 사용할 수 있다. 프로퍼티 추가 저장 프로퍼티는
Scope 코드의 범위, 코드는 접근하거나 적용되는 범위가 존재한다. 전역범위(Global Scope) / 지역범위(Local Scope) Scope는 크게 두 가지로 분류된다. 💡 이 두가지를 나누는 기준은? {} 중괄호이다. {} 밖이면 Global Scope
문자열 String: Character 타입(문자) 값의 집합을 표현한 것, 구조체, 값 형식 NSString: 클래스, 참조 형식 💡 String과 NSString는 타입캐스팅으로 서로 호환된다. 문자열 리터럴 (String Literals) 문자열 리터럴은 상
String.Index 문자열에서 문자나 코드 유닛의 위치이다. swift는 유니코드 문자를 처리해야해서 문자열의 인덱스를 Int 0,1,2...가 아니라 string.Index라는 타입을 사용한다. String Editing 문자열 더하기 append: 파라미터로
연관된 상수들을 하나의 이름으로 묶은 타입공통된 주제에 대해서 이미 정해놓은 입력 값만 선택해서 받고 싶을 때 주로 사용하며 코드 가독성과 안정성이 높아진다. 또한 Heap에 저장되는 String과 달리, Enum은 값 형식으로 Stack에 저장되어 성능도 향상된다.
Protocol 어떤 기능에 적합한 특정 메서드, 프로퍼티 및 기타 요구 사항의 청사진Blueprint를 의미한다. 클래스, 구조체, 열거형이 프로토콜을 채택할 수 있고, 프로토콜에 정의된 요구사항의 실제 구현을 제공해야한다. 프로토콜의 요구 사항을 모두 충족하면 해당
Protocol의 특징 swift에서 Protocol은 함수, 클로저와 같이 1급 객체다. 일급 객체의 특징 객체가 런타임에 생성된다. 변수, 상수의 타입으로 사용할 수 있다. 해당 프로토콜의 객체를 생성해서 쓰는게 아니라 해당 프로토콜을 채택한 구조체, 클래스, 열
Protocol의 Generic 프로토콜에서 일반 제네릭을 사용할 때 처럼 사용하면 에러가 발생한다. 프로토콜에서 제네릭 사용 방법 프로토콜에서 제네릭을 사용하려면 associatedtype 을 사용해야 한다. 타입제약도 동일하게 사용 가능하다. 메소드는 기존에 제네릭 사용 방식으로 제네릭 함수를 선언할 수 있다. 프로토콜 채택 시 사용 방법 프로토...
⚒️ Error Handling Error Handling은 프로그램에서 에러 조건들에 대해 대응하고 회복하는 프로세스이다. Swift는 런타임에서 에러가 발생한 경우 해당 에러를 처리하기 위해 throwing, catching, propagting, manipulat
접근 제한자는 다른 소스 파일이나 모듈의 코드에서 코드 일부에 대한 액세스를 제한한다.이 기능은 코드의 세부 구현 사항을 숨기고, 해당 코드를 접근하고 사용할 수 있는 기본 인터페이스를 지정할 수 있게 한다.코드의 세부 구현 사항을 숨기기때문에 객체 지향의 은닉화가 가
Generic 제네릭이란 타입에 의존하지 않는 범용 코드를 작성할 때 사용한다. 제네릭을 사용하면 중복을 피하고, 코드를 유연하게 작성할 수 있다. Array와 Dictoinary등 swift 표준 라이브러리의 대다수는 제네릭으로 선언되어 있다. 제네릭 선언 ` 안에
combine을 공부하다가 모르는 키워드를 발견했다. Self란 무엇인가?self는 소문자로 시작하는 키워드로, 현재 인스턴스를 나타낸다. 주로 메서드 내에서 사용되며, 해당 메서드를 호출한 현재 인스턴스를 가리킨다. self를 사용하여 인스턴스의 속성에 접근하거나,
propertyWrapper란 Swift 5.1에서 도입된 기능 중 하나로, 속성에 대한 접근 및 저장을 캡슐화하고 수정자를 제공하여 코드를 간소화하고 재사용성을 높이는 데 사용됩니다.만약 @propertyWrapper 구조체에 init이 없다면 number의 타입이
함수형 프로그래밍 순수함수 Side-Effect가 발생하지 않는 함수 고차함수 함수를 파라미터로 받거나 함수를 리턴하는 함수 함수의 합성(Composition) 함수의 반환값을 다른 함수의 입력값으로 사용 함수의 커링(Currying) 여러개의 파라미터를 받는