Swift
-
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..
-
타입 메서드Swift 2021. 1. 27. 09:49
안녕하세요. 그린입니다! 이번 포스팅에서는 타입 메서드에 대해 알아보겠습니다. # 타입 메서드 코딩을 하다보면 구조체나 클래스로 생성하였는데 다른곳에서 부르려할때 인스턴스를 만들지 않고 함수를 쓰려할때 어떻게 구현하는지 궁금했습니다. 그러다 타입 메서드에 대해 알게되었습니다!! 우선 흔히 잘 알고있는 인스턴스 메서드의 생성과 사용하는 방법에 대해 보겠습니다. -. 인스턴스 메서드 class InstanceMethod { func instanceTest() -> String { return “test” } } var instanceMethod = InstanceMethod() print(instanceMethod.instanceTest()) 이렇게 사용하는 경우가 인스턴스 메서드의 사용입니다. 즉, Ins..
-
온도 표현단위와 변환 방법Swift 2021. 1. 19. 19:55
안녕하세요. 그린입니다! 이번 포스팅에서는 온도 표현단위와 해당 단위들끼리 Swift에서 변환해보는 방법에 대해 알아보겠습니다😄 1. 온도의 표현단위 : 일단 온도를 나타내는 표현으로는 섭씨/화씨/켈빈 세가지로 들 수 있다. 섭씨와 화씨온도는 1기압에서 물의 끓는/어는 온도를 기준으로 정하여 사이를 등분한 온도 체계이다. 1) 섭씨: °C로 우리가 흔히 사용하는 온도 체계로 처음 제안한 천문학자인 안데르스 셀시우스의 이름을 중국어 발음으로 ‘섭이사’라고 하는데 앞글자인 ‘섭’과 존칭인 ‘씨’를 붙여 ‘섭씨온도’라 불리게 되었다. 2) 화씨: °F로 물리학자인 다니엘 가브리엘 파렌하이트가 제안을 했으며 어는 온도를 32°F, 끓는 온도를 212°F로 정하였고 그 사이를 180등분했다. 섭씨처럼 명칭은 동일..
-
CFAbsolute TimeGetCurrentSwift 2021. 1. 15. 09:48
안녕하세요 그린입니다! 이번 포스팅에서는 프로세스의 시스템 시간 (절대 시간)을 구하는 메서드인 CFAbsolute TimeGetCurrent에 대해 알아보겠습니다. 우선 해당 메서드를 가장 많이 사용할때는 원하는 프로세스의 시작과 끝의 시간을 재기 위해 저는 사용했습니다. 그럼 CFAbsolute TimeGetCurrent이 무엇인지 애플 공식 문서를 보면서 일단 알아가시죠! -. CFAbsolute TimeGetCurrent 이렇게 애플 공식문서를 보면 시스템의 절대 시간을 반환하는 메서드라고 설명이 나와있습니다. 이러한 시간을 얻기위한 TimeUtility는 많은것이 있는데 그건 밑에서 알아보겠습니다!! 아래와 같이 직접 메서드를 구현하며 시간을 담을 변수를 선언하고 절대 시간을 담는 방법으로 사용..