본문 바로가기

Swift

(5)
[Swift] lazy는 왜 쓰는지 아시나요? `lazy`란? > iOS는 App의 사용량이 너무 높아지면 앱을 죽이기 때문에, 개발자는 처음부터 메모리 관리를 신경쓰며 코드를 짜는게 매우 중요하다. 따라서 개발자는 실제로 필요한 경우가 아니라면, 비싼 코스트의 작업을 하는것을 지양해야 한다. (복잡한 allocation을 예로 들 수 있다.) Swift는 비싼 코스트의 작업을 in-time 계산할 수 있게 하는 `lazy variables`라는 메커니즘을 제공한요! `lazy variables`는 변수가 처음 요청되었을 때만 사용자가 지정한 함수를 사용하여 생성하기 때문에 메모리에 관리를 할 수 있다. 만약 요청되지 않는다면, 지정된 함수는 절대 불리지 않고, 이는 processing time을 절약해줄 수 있다! 정리하자면.. `lazy` 키워드..
[Swift] guard, let 둘의 차이점은? Optional 값을 Unwrapping 할 때 쓰이는 'guard'와 'let'. 이 둘의 차이점은 무엇일까? > if 구문은 "~면 ~해라!" guard 구문은 "~아니면 끝내라!" 라는 어구와, 코드의 가독성의 장점. `guard`는 `else`를 사용하여 예외처리를 한다! 이렇게만 알고있는 것 같아 좀 더 디테일하게 공부해봤다. ```swift guard (Bool 타입 값) else { (예외사항 실행문) (제어문 전환 명령어) } ``` 위의 코드를 보면, `guard`는 `if`와 같이 Bool 타입의 값을 조건으로 받되, 해당 조건 뒤에 바로 `else`가 붙는다는 점을 확인할 수 있다. `guard`구문에서는 `if`구문과 달리 예외 처리를 위해 `else` 구문을 따로 추가하여 예외를 ..
[Swift] final 왜 쓰는지 아시나요? 더이상 상속하지 않을 class 일 때, 습관적으로 사용했던 final.. final 은 왜 사용할까? 실제로 애플 깃허브에서는 final 사용이 성능을 개선시켜준다는 팁이 적혀있다. 이유를 설명하기에 앞서 컴파일 타임, 런 타임, Dispatch, vtable 에 대한 설명이 필요하다. ☑️ 컴파일 타임(CompileTime)과 런 타임(RunTime) 프로그램을 생성하기 위해 개발자는 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어 코드로 변환돼 실행 가능한 프로그램이 된다. 이러한 편집 과정을 우리는 컴파일 타임(CompileTime) 이라고 한다. 컴파일과정을 마친 프로그램은 사용자에 의해 실행되며 이러한 응용 프로그램이 동작되는 때를 런 타임(RunTime) 이라고 한다. ☑️ Dispat..
[Swift] Struct 와 Class 뭘 써야할까? 구조체와 클래스는 데이터를 용도에 맞게 묶어 표현하고자 할 때 유용하다. 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있다. Struct 의 특징을 알아보자. 값 타입이다. 값의 타입을 정의하기 위해 사용된다. 대입 명령 시 내용이 복사된다. 참조 카운트가 없어서 메모리 관리에 안전하다. 레퍼런스 형태가 아니기 때문에 공유가 불가능하다. 불변성(Immutable) 구현에 유리하다. 멀티스레딩에 안전하다. 상속이 불가능하다. 프로토콜은 사용이 가능하다. Object가 아니기 때문에 AnyObject로 캐스팅이 안된다. -> 기존의 id 로 쓰던 타입들을 모두 AnyObject 로 받는 경우가 많은데 이 경우 struct 로 만들어진 값을 넘기는게 불가능하다는 의미가 된다. 대신 Any 의..
[Swift] Swift는 왜 상수(let)를 선호할까? 우리는 변수(var)나 상수(let)를 이용해 데이터를 메모리에 임시로 저장한다. 변수(var)는 생성 후 데이터 값을 변경할 수 있지만, 상수(let)는 한번 값을 설정하면 다음에 변경할 수 없다. 주민등록증을 예시로 생각해보자. 주민등록증에는 이름, 주민번호, 주소가 등록되어 있다. 이름과 주민번호는 주로 바뀔 일이 없으니 상수로 표현할 수 있다. 주소는 유동적으로 바뀔 수 있으니 변수로 표현한다. ✓ var: 가변(Mutable) 변수 ✓ let: 불변(Immutable) 변수 그래서 왜 Swift는 상수를 더 선호할까? Swift는 상수를 선호한다. 상수를 선호하면 좋은 점은 가독성이 좋다. 상수로 값을 선언하게 된다면 값의 변화가 없다는 사실을 직관적으로 알 수 있다. 컴파일러가 별도의 최적화를..