Swift
-
ARC (Automatic Reference Counting)Swift 2021. 1. 11. 13:32
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D 면접 단골질문! 오늘은 ARC에 대해 알아보겠습니다. ARC가 뭔가요? 라는 질문에 얼마나 대답할 수 있으신가요? 저는 수박 겉핥기식으로만 알고 있었는데요. 오늘 제대로 정리해보려고 합니다. "어.. 그거 레퍼런스 카운트 늘리고 줄이면서 자동으로 메모리 관리해주는 거잖아요, weak, unowned 있고 그거.... " 대략적으로는 알겠는데 막상 설명하려고 하면 자꾸 두리뭉실해지는 이녀석... 오늘은 해결해봅시다 🔥 ARC (Automatic Reference Counting) ARC는 자동으로 메모리를 관리해주는 컴파일러의 기능입니다. 인스턴스에 대한 메모리 관리를 컴파일..
-
deferSwift 2020. 9. 21. 06:59
안녕하세요 :) 오늘은 다소 생소한 문법(지극히 주관적 의견)인 defer에 대해서 간단하게 알아보겠습니다. 공식문서엔 다음과 같이 설명이 되어있어요 Defer Statement A defer statement is used for executing code just before transferring program control outside of the scope that the defer statement appears in. 스코프 밖의 프로그램 컨트롤에 전달하기 직전에 수행되는 문법이라고 하네요 ! 말을 조금 어렵게 써놨지만, 기본적으로 함수는 return 된 다음에 실행되는 것이 불가능해서 이렇게 장황한 설명이 붙은 것 같습니다. 우리가 단편적으로 느끼기에는 함수가 끝나고 실행되는 것 '같은'..
-
순수함수 Pure functionSwift 2020. 8. 4. 21:42
순수 함수란 수학에서 사용하는 함수를 떠올리시면 좋습니다. f(x) -> y 위 함수의 의미는 아시겠죠? x를 넣으면 y가 나온다. 네 프로그래밍에서 말하는 순수 함수도 정말 순수하게 '수학에서 사용하는 함수처럼' 동작하는 함수에 가깝게 만들자 라는 취지에서 출발했다고 합니다. 프로그래밍에서 순수 함수는 다음 정의를 따릅니다. 동일한 입력에는 항상 같은 값을 반환해야 한다. 함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 한다. (Side effect 가 없어야 한다) 예를 들어, 함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 것 수학에서의 함수처럼 동일한 입력에는 항상 같은 값을 반환해야 합니다. 그리고 함수의 결과가 외부에 영향을 주지도, 받지도 않는 함수를 순수함수 라고 합니다..
-
람다 λ lambdaSwift 2020. 8. 4. 20:59
공부하며 정리하는 블로그로 잘못된 내용이 다소 포함될 수 있습니다. 감안하여 봐주시고 문제가 있다면 댓글로 알려주시면 감사하겠습니다!! 람다가 Swift 카테고리가 맞는지는 조금 의문이지만.. 클로저에 대해 이해하기 전에 람다를 간략하게 살펴보고 가면 좋겠다 싶어서 글을 쓰게 되었습니다 :) 아주 빠르고 간단하게만 살펴보고 가겠습니다. 람다, 즉 람다 대수는 수학자 알론조 처치에 의해 수학기초론 연구의 일환으로 1930년대 소개되었다고 합니다. 자세한 역사는 위키가 더 좋을듯 하구요. 람다는 처음에 논리적 모순을 보이기 위해 사용되었다고 합니다. 함수에 굳이 이름이 있을 필요 없다는 점에 착안해서 표현을 축약시켜 놓은 형태로 볼 수 있습니다. 프로그래밍에서 람다는 주로 익명 함수를 나타내기 위해 사용되는..
-
ReduceSwift 2020. 8. 4. 15:22
Reduce에 대해 알아보겠습니다! Reduce 정의부터 살펴볼까요?? 직역해보면 연속된 원소들을 클로저를 이용해 결합시키고 그 결과를 리턴한다. 정도로 이해할 수 있을 것 같아요. reduce는 2개의 파라미터 initialResult, nextPartialResult 와 1개의 Result 를 return 합니다. 공통점이 보이시나요? 네 파라미터와 결과가 모두 어떤 Result 들을 리턴하고 있습니다. reduce를 사용하는 목적을 생각해볼까요? 위 정의의 Return Value 를 보면 the final accumulated value, 최종적으로 계산된 값을 리턴한다고 나와있습니다. 단계 단계가 다 결과이니 만약 시퀀스의 원소가 없다면, 즉 nextPartialResult가 없으면, 초기값(초기..
-
~= 연산자 in SwiftSwift 2020. 7. 7. 16:52
오늘은 ~= 연산자에 대해서 알아보겠습니다. ~= 연산자 ~= 연산자는 대상이 특정 범위에 속하는지 범위를 체크하는 연산자 입니다. 저희가 많이 사용하는 switch 구문에 바로 이 ~= 연산자가 사용됩니다. case 의 범위를 확인할 때 내부적으로 ~= 연산자가 불려서 사용되고 있는 것이죠. ~= 연산자는 비교 연산자 == 의 변형? 확장된 상태로 생각할 수 있겠습니다. 두 대상이 같은지 단순 비교할 때 == 연산자와 달리 대상이 어떤 범위에 속하는지 확인합니다. 숫자 5가 0~ 10 사이일 때 10을 곱해주려면 이렇게 할 수 있습니다. var n = 5 if 0.. Bool { if "a"..."z" ~= str { // str contain lowercased alpabet return true }..
-
Hashable in Swift 5Swift 2020. 6. 25. 19:48
요즘 CS193p 강의를 다시 보고 있는데 이런 내용이 있었나 와 정말 이렇게 알찬 강의였나 라는 생각이 계속 드네요 너무도 배울게 많고 부족했던게 많았구나를 알려주는 강의인 것 같습니다. protocol 쪽을 보다가 Hashable에 대해 잠깐 짚어보고 넘어가려고 합니다 :) 새로운 구조체나 클래스를 정의해서 객체를 만들었는데, 얘네들을 비교하고 싶다? 그럴 때 Hashable protocol 을 사용합니다. 그럼 Hashable protocol은 뭘까요? Hashable protocol Hashable 을 뭐라고 설명하는지 먼저 살펴볼까요? integer hash value를 생성하는 Hasher로 hash 될 수 있는 타입. 한 마디로 Hashable protocol을 상속 받는다는 건 hash 될..
-
associatedTypeSwift 2020. 3. 18. 16:52
오늘은 associatedType 에 대해 알아보겠습니다! associatedType을 이해하기 위해서는 Protocol 과 Generic 에 대해 먼저 이해하고 계셔야합니다. 왜냐하면 associatedType 은 Protocol을 위한 Generic 이라고 생각하시면 되기 때문이죠. 🙃 정의 공식 문서에서는 다음과 같이 설명하고 있어요. An associated type gives a placeholder name to a type that is used as part of the protocol. The actual type to use for that associated type isn’t specified until the protocol is adopted. associated type 은 p..