본문 바로가기

iOS 앱 개발자 프로젝트/Swift 문법 정복하기

[Swift] Thread, Asynchronous & Networking 2024년 3월 14일 화이트데이 스레드와 비동기에 대해 알아보고 비동기를 활용하여 서버로부터 데이터를 받아오는 네트워킹에 대해 공부합니다. ☑️ Thread 스레드(Thread)는 컴퓨터 프로세스 내에서 실행되는 실행 흐름의 단위. 프로세스는 운영체제로부터 자원을 할당받아 실행 중인 프로그램의 인스턴스를 나타내는데, 각 프로세스는 하나 이상의 스레드를 가질 수 있다. Swift에서의 스레드 종류 메인 스레드(Main Thread) - App의 주요 인터페이스 및 UI 업데이트를 담당하는 스레드. UI 요소의 변경은 메인 스레드에서 수행 백그라운드 스레드(Background Threads) - 메인 스레드 이외에 동시에 작업을 수행하기 위해 생성되는 스레드들을 일컫는다. 주로 작업을 분산하거나 병렬로 처.. 더보기
[Swift] Generic 함수, 타입, 데이터 구조에 대한 유연하고 추상적인 코드를 작성할 수 있게 해주는 기능. 다양한 타입에서 작동하도록 일반화된 코드를 작성할 수 있게 해주는 제네릭 을 공부해 봅니다. ☑️ Generic 제네릭은 실제 타입 이름을 써주는 대신에 placeholder를 사용한다. [ eg: T, V, U ] placeholder의 실제 타입은 함수가 호출되는 순간 결정된다. placeholder는 타입 매개변수로 쓰일 수도 있는데, 이 타입 매개변수는 함수를 호출할 때마다 실제 타입으로 치환된다. 하나의 타입 매개변수를 갖지 않고 여러 개의 타입 매개변수를 갖고 싶다면 홀화살괄호 기호 안쪽에 쉼표로 분리한 여러 개의 타입 매개변수를 지정해줄 수 있다. [ eg: ] 제네릭 타입을 구현하면 구조체, 클래스, .. 더보기
[Swift] Extension Extension 에 대하여 정리해 봅니다. 간단히 말해, 기존 타입에 새로운 기능을 추가하거나 확장할 수 있는 기능으로, 해당 타입의 소스에 접근하지 않고도 기능을 확장할 수 있다. ☑️ 확장(Extension) structure, class, enum, protocol 타입에 새로운 기능을 추가 → 기존 타입에 기능을 추가하는 확장! 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의(Override)할 수는 없다. 외부에서 가져온 타입에 내가 원하는 기능을 추가하고자 할 때 확장을 사용할 수 있다. extension 확장할 타입 이름 { //타입에 추가될 새로운 기능 구현 } extension 확장할 타입 이름: 프로토콜1, 프로토콜2, 프로토콜3 { //프로토콜 요구사항 구현.. 더보기
[Swift] protocol, associatedtype, typealias 메서드, 속성 및 기타 요구사항의 청사진을 정의하여 클래스, 구조체 또는 열거형에서 구현할 수 있는 일종의 인터페이스인 프로토콜에 대해 공부해 봅니다. #1. protocal #2. associatedtype #1. protocal ☑️ protocol 프로토콜에서는 이름과 타입 그리고 gettable, settable을 명시한다. 프로토콜은 설계된 조건만 정의를 하고 제시를 할 뿐 스스로 기능을 구현하지 않는다. class, structure, enum이 프로토콜을 ‘채택’하고 요구사항을 충족하면 프로토콜을 ‘준수’했다고 한다. 프로퍼티는 항상 var로 선언해야 한다. 메서드를 정의할 때 메서드 이름과 리턴값을 지정할 수 있고, ****{}(구현 코드)는 적지 않는다. 상속과 유사하다고 볼 수도 있겠지.. 더보기
[Swift] Exception (throws, throw, do-catch, try) Swift에서의 예외 처리 방법에 대해 공부해 봅니다. #1. 실패 가능한 상황과 예외 처리 #2. Throws 와 do-catch 문 #3. try , try?, try! #1 실패 가능한 상황과 예외 처리 ☑️ 에러 처리 프로그램에서 에러가 발생한 상황에 대응하고 이에 대응하는 과정 Swift에서는 런타임에 에러가 발생한 경우, 이를 처리를 지원하는 클래스를 제공한다. 예외 처리를 통해 예외 상황을 구별하고 프로그램 자체적으로 오류를 해결하거나, 사용자에게 어떤 에러가 발생했는지 알려주는 등 대응을 해야한다. ☑️ Error Error는 던져질 수 있는 오류 값을 나타내는 유형 Error 프로토콜을 채택하여 사용자 정의 에러를 정의하여 사용할 수 있다. ※ 프로토콜 알아보기 참고 자료: https:/.. 더보기
[Swift] Property Observer, Type Casting, Access Modifier 2024년 3월 13일 수요일 observing하여 특정 preperty의 값 변경 전후에 추가 동작을 수행할 수 있는 Property Observer와, 변수나 객체의 타입을 다른 타입으로 변환하는 프로세스인 Type Casting, 코드 요소에 대한 외부 접근을 제한하여 모듈 간의 접근성과 보안을 조절하는 Access Modifier 이해하기 #1. Property Observer (프로퍼티 옵저버) #2. Type Casting (타입 캐스팅) #3. Access Modifier (접근 제한자) #1. Property Observer 변수에 프로퍼티 옵저버를 정의하여 프로퍼티 값의 변경 사항을 모니터링하고, 미리 구현한 코드로 이에 대응 다시 말해, 해당 프로퍼티를 관찰(observe)하면서 변경 .. 더보기
[Swift] Inheritance, Initializer 2024년 3월 12일 화요일 클래스의 상속 개념과 객체를 만들기 위한 다양한 초기화 방법에 대해 공부해 봅니다. #1. inheritance (상속) #2. initializer (초기화) #1. inheritance (상속) 클래스 간에 코드 및 속성을 공유하는 메커니즘을 제공: 기존 클래스에서 새로운 클래스를 만들고, 기존 클래스의 특성(속성과 메서드)을 재사용하면서 새로운 기능을 추가할 수 있도록 해준다.(서브 클래싱) 코드 재사용성: 기존 클래스의 특성을 재사용하여 중복을 피하고 유지보수성을 높일 수 있다. 계층 구조: 부모 클래스와 이를 상속받는 자식 클래스 간에 계층 구조를 형성하여 다양한 추상화와 분류 가능 override (재정의) 부모 클래스에서 '상속받은' 메서드, 속성 또는 서브스크.. 더보기
[Swift] Class, Struct, Enum 2024년 3월 11일 월요일 인스턴스를 만들 수 있는 클래스, 구조체, 열거형에 대해 공부해 봅니다. #1. 클래스 (Class) #2. 구조체 (Struct) #3. 열거형 (Enum) #4. class, struct, Enum의 차이 #1. 클래스(Class) 클래스는 프로퍼티(Property)과 메서드(Method)로 구성되어 있다. A. 프로퍼티(Properties): 프로퍼티는 클래스, 구조체, 또는 열거형 안에 있는 변수 또는 상수를 나타낸다. 클래스의 속성으로 객체의 상태를 저장하거나 제공한다. 이러한 상태는 클래스의 인스턴스가 가질 수 있는 고유한 데이터를 나타낸다. 프로퍼티는 저장 프로퍼티(Stored Properties)와 계산 프로퍼티(Computed Properties)로 나뉜다... 더보기