Swift
-
Early ExitSwift 2021. 4. 13. 10:55
안녕하세요. 그린입니다🟢 저번 포스팅인 옵셔널 체이닝에 이어 관련된 Early Exit, 빠른종료에 대해 학습해보겠습니다🧑🏻💻 옵셔널 체이닝과 옵셔널 바인딩은 이해가 된 상태에서 빠른 종료의 키워드인 guard에 대해 알아보고 if와는 어떤 옵셔널 바인딩에서 차이가 있을지에 대해 배워보겠습니다🙌 Early Exit : 빠른종료로 if문에서는 else 구문이 없어도 되며 만약 else 구문이 있을때는 if와 else 구문 모두 구현을 해주며 분기를 해줍니다. 그러나 guard 구문은 꼭 else 구문이 있어야 됩니다. else 구문에서는 무조건 상위의 코드블럭을 종료시키는 제어문 전환 명령 혹은 그 구문을 탈출시킬 수 있는 비반환 함수 / 메서드 호출이 있어야 합니다. 제어문 전환 명령어 : return..
-
Optional ChainingSwift 2021. 4. 12. 19:33
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Optional Chaining 옵셔널 체이닝에 대해 학습해보겠습니다. 옵셔널 체이닝 (Optional Chaining) : 옵셔널 체이닝이란 옵셔널을 여러번 체인 처럼 사용하는 기술 -> 옵셔널 체이닝을 된 부분에서 값이 하나라도 nil이면 nil을 반환 옵셔널 체이닝의 사용 import Foundation class Camper { var nickName: String var description: Description? init(nickName: String) { self.nickName = nickName } } struct Description { var gender: Gender? var age: Int } class Gender { var gende..
-
GCD & OperationSwift 2021. 4. 9. 15:02
안녕하세요. 그린입니다🟢 이번 포스팅에서는 일전에 다룬바 있는 동시성 프로그래밍에서 GCD & Operation에 학습해보겠습니다. 이전보다 전체적인 개념에 대한 학습은 같지만 조금 더 심화된 내용이라고 보면 될것 같습니다☺️ 우선 동시성 프로그래밍에서 중요한 비동기에 대해 조금 짚고 넘어가보겠습니다. 동시성 프로그래밍을 할때 가장 중요한 부분이 각 스레드별로 비동기적으로 일을 처리하게 해주는 부분입니다. 그래서 각 일을 기다렸다 하지 않고 동시에 처리하도록 만들어줍니다. 왜 작업을 비동기로 처리해야될까? : 비동기로 처리를 해주는 경우는 굉장히 많습니다. 예를들어 네트워크 작업들은 디폴트가 비동기입니다. 흔히 보는 테이블 및 컬렉션뷰에서 이미지를 서버에서 받아 뿌려주는 인스타그램들의 경우도 만약 비동기..
-
lazy varSwift 2021. 3. 17. 10:25
안녕하세요. 그린입니다! 이번 포스팅에서는 lazy var에 대해 알아보겠습니다😃 lazy var??? : lazy는 직역하여 생각해볼때 '게으른'이라는 뜻이있다. 처음 접할때 왜 게으른일까? 뭘 늦게 해주는걸까? 라는 의문이 들었습니다. lazy var의 역할 : lazy var는 우선 메모리와 관련이 있습니다. 메모리를 보다 효율적으로 관리하기 위해 공식문서에서는 처음 사용되기 전까지는 메모리를 잡아먹는 연산이 이뤄지지 않는다고합니다. 이걸 좀 더 생각해보면 해당 변수가 필요하여 사용되기 전에는 메모리를 차지하지 않고 해당 변수를 사용하려할때 로드되어 메모리를 차지 하는것입니다. 처음 의문을 가진 부분에 답이 되었습니다. "게으른 저장? 처럼 필요할때 한다~" 이런 게으른 느낌이 들었습니다. lazy..
-
Swift PerformanceSwift 2021. 3. 1. 17:03
안녕하세요. 그린입니다! 이번 포스팅에서는 Swift Performance, 스위프트 퍼포먼스에 대해 이야기 해볼까 합니다😃 우선 Performance는 뭐라고 생각하면 좋을까요? 저는 퍼포먼스가 성능이라고 생각됩니다. 같은 애플리케이션을 구현하더라도 클래스로 구현하냐 구조체로 구현하냐에 따라 앱 성능 차이가 있을겁니다. 이러한 앱의 성능을 최대한으로 이끌어낼 수 있어야 좋은 앱이라고 할 수 있겠죠??🙌 성능을 자료구조에서는 어떤식으로 표현해볼 수 있을까요? : 시간복잡도 (빅오 표기법, Big O)로 표현해볼 수 있습니다. 시간복잡도? : 코드 알고리즘의 성능을 특수한 표현으로 나타낸 표기법으로 성능이랑 연관되어 있습니다. : 예를들어 이중 for문을 시간복잡도로 나타내면 O(N^)으로 나타낼 수 있습..
-
ARC 심화Swift 2021. 2. 17. 12:12
안녕하세요. 그린입니다! 이번 포스팅에서는 ARC에 대해 심화적으로 알아보겠습니다. ARC란? : Automatic Reference Counting (자동참조계수)를 뜻한다. : 다른 언어에는 없는 독창적인 것으로 자바의 가비지 컬렉션 기법과는 다름 (메모리 해제 시점에 관한 이해가 필요) 자동참조계수란? : 앱의 메모리 사용을 추적하고 관리해준다. : 인스턴스가 더이상 필요하지 않을때 클래스 인스턴스에 사용된 메모리를 자동으로 해제해준다. (참조 타입의 할당 / 해제 시점을 자동 관리) : 클래스의 인스턴스(참조 타입)에만 적용 (구조체/열거형 등 값 타입에는 적용되지 않는다) ARC 특징 1) 하나의 활성화 참조가 있다면 인스턴스는 할당 해제되지 않고 계속 존재 2) 강한참조의 할당을 nil로 정리..
-
Type CastingSwift 2021. 1. 29. 15:12
안녕하세요. 그린입니다! 이번 포스팅에서는 Type Casting (타입 캐스팅)에 대해 학습해보겠습니다😺 Type Casting : 인스턴스 타입 확인 및 슈퍼/서브 클래스 타입같이 사용하기 위한 개념 : is / as 연산자로 구현 1) is 키워드 : 인스턴스 타입 확인 class Test { var age: UInt init (age: UInt) { self.age = age } } var green = Test(age: 100) if green.age is UInt { print(“green’s age is UInt type) } else { print(“green’s age is not UInt type) } -> 이렇게 해당 타입이 맞는지 확인해주는 개념 더 나아가 여러 클래스를 상속 받았을..
-
Protocol Oriented ProgrammingSwift 2021. 1. 28. 20:02
안녕하세요. 그린입니다! 이번 포스팅에서는 Protocol Oriented Programming (POP), 프로토콜 지향 프로그래밍에 대한 개념을 알아보겠습니다. -. 프로토콜이란? : 특정 기능을 수행하기 위한 메서드/프로퍼티/요구사항 등등의 청사진이라고 생각하면된다. : 프로토콜을 구현한것을 채택하고 준수한다고 표현한다. -. POP가 나타난 이유 : 기존에는 객체 지향 프로그래밍에서 Class 상속을 통해 기능을 구현하였다. -> 참조 타입으로 다중 스레드 환경에서 무분별 상속 시 기존 데이터가 변경되기에 불안전 -> Struct / Enum 타입은 값 타입으로 상속이 불가 -> 결국 Protocol과 Extension이 발표되어 해당 두개를 가지고 상속 기능이 생김!! -> 스위프트 버전 2.0..