반응형

분류 전체보기 201

Kodeco | Swift의 데이터 구조 및 알고리즘 - 복잡성

안녕하세요데이터 구조 및 알고리즘에 대해서타 언어를 배울 때 공부했지만 또 한 번 더 다루면서 Swift에 좀더 친숙하고 내가 몰랐던데이터 구조나 알고리즘을 알기위해서 구매를 했습니다  사이트(클릭클릭👆🏻) kodeco에 들어가면 다양한 자료들을 볼 수 있으니 강추 드립니다강의보단 책이 좋다는 평이 있어서 저도 책으로 구매하였답니다 :) 자세히 정리하는 부분은 공개된 부분만 자세히 정리할 예정이며 나머지부분은 짧게 정리할 예정입니다  알고리즘의 성능을 수학적으로 표현이 가능한 표현법이 있습니다그리고 시간과 공간복잡도를 표현이 가능하구요실제 러닝타임을 표시하는것보다데이터나 사용자의 증가율에 따른 알고리즘의 성능을 예측하는게 더 중요하다고 생각이 드는데요 왜냐면적은 양의 데이터로 작업할 때 값을 시간과 ..

Swift | weak / unowned에 관하여

안녕하세요! 저번에 다루었던 메모리관리의ARC에 관하여다루고자 합니다 짧게 말하자면애플은 이전에 MRC(manual reference count)를 채택하여수동으로 메모리를 관리하여 모든 메모리 해제 코드를 삽입을 했습니다여기서 발생하는건 실수할 가능성이 높아메모리 관리에 대한 부담이 굉장히 높았답니다그래서 현대적인 언어들은 대부분 자동으로 메모리 관리 모델을 사용하고 있습니다 그래서 지금 현재  Swift에서 사용하고 있는건ARC(automatic reference count)입니다retain() 할당하고 release() 해제코드로 메모리 해제를 한다고 생각하시면됩니다컴파일러가 메모리 관리코드를 시작하기전에 미리 자동으로 추가함으로 프로그램의 메모리 관리에 대한안정성이 증가하게 됩니다 WWDC21에서..

Swift 2024.05.23

Swift | Error Handling(에러 처리) 와 Result Type에 관하여

안녕하세요 오늘은 에러 처리에 관하여 정리하고자 합니다 개발자라면 무조건 에러는..마주치게 되는데만약 우리가 예상치 못한 상황에서 에러를 마주치게된다면??!! 어떤 에러인지도 파악해야하고 그 에러를 처리하기 위해 다뤄야하는것도 다를것이며이런저런 처리를 하기위해서 고민을 하기 시작할 겁니다 저 역시 집을 빨리 가기 위해서 머리를 굴리고 있을 테니까요^^ 예를들어서디스크의 파일에서 데이터를 읽고 처리하는 작업을 진행할 때지정된 위치에 파일이 존재하지 않거나파일에 읽기 권한이 없거나적절한 형식으로 인코딩 되어있지 않은 것 등등실패할 수 있는 요인이 많습니다 이걸 방지하기 위해 프로그램에서 일부 실패할 수 있는요건을 해결하고 해결할 수 없는 에러는 전달하게끔작성할 수 있답니다 코드를 보면서 에러를 다루는 방법에..

Swift 2024.05.23

Swift | ARC에 관하여[WWDC21]

안녕하세요오늘은 ARC에 관하여 설명하고자 합니다  (TMI지만 앞쪽 노래 두둠칫 느낌 좋음) 우선 Swift는 값타입(구조체 / 열거형)을 제공하고 있습니다value typestructenum 참조 타입과 함께 의도치않게 함께 제공되는 경우의 위험을 방지하려는 경우 값 타입을 사용하는 것이 좋습니다 클래스는 참조 타입이고 Reference Typeclass(closures)  ARC(Automatic Reference Counting)통하여 메모리를 관리합니다    Swift에서 object lifetimes / ARC에 대해서 알아봅시다 스위프트에서는  객체의 수명은초기화 시에 시작(init)하여 마지막 사용 시에 종료가 됩니다 ARC는 수명이 끝난 후 객체 할당을 해제(deinit)함으로써 메모리를..

Swift 2024.05.22

Swift | 클로저(Closure)에 관하여 -2

안녕하세요! 오늘은클로저 2편으로 왔습니다 정리할 부분이 많기 때문에또 다시 힘차게 정리를 해보겠습니다! 저번시간에 클로저를 함수의 파라미터에넣을 수 있는 부분을 마지막으로 끝을 냈습니다 거기서 더하여예시를 좀 더 보려고 합니다 콜백함수 다른 언어에서도 많이 사용하는 람다 형식의 콜백함수를 볼 수 있습니다 만약 호출할 때 형식의 어려움이 있다면? 엔터를 치면 바로 형태가 쉽게 나온답니다엔터의 결과를 아직 보지 못했으니 아래에한 번 더 후행 클로저에 대해서 설명할 예정이니 계속 해서 읽어주세요! 클로저를 간소화 하는 방법은 많습니다 문맥상에서 파라미터와 반환벨류(return value) 타입 추론한 줄의 코드(싱글 익스프레션)인 경우에 리턴을 적지 않아도 됩니다아규먼트 이름을 축약이 가능합니다 : $0, ..

Swift 2024.05.21

Swift | 클로저(Closure)에 관하여 -1

안녕하세요오늘은 클로저를 알아봅시다!  클로저 뜻우선 구글 번역기로closure의 뜻을 알아보면'폐쇄'라고 나옵니다  변수에 함수가 갇혀있는 뜻이라고 생각하면 편할것 같습니다  타 언어 프로그래밍을배우셨다면 클로저를 익명함수, 람다와 많이 유사한 부분이라고 느낄 수 있습니다 저또한 C#에서 많이 보던 녀석이라.. 낯설지 않았답니다 클로저는 정의된 모든 상수와 변수에 대한 참조를 캡처하고 저장이 가능합니다이러한 상수와 변수를 Closing over이라고 합니다  제가 느낀바로는 함수와 클로저의 차이는 함수는이름이 있는 코드의 묶음이여서 다른 코드에서 함수이름으로 호출하여 사용이 가능한 형태라고 생각이 들어요 클로저는굳이 함수의 이름이 없어도 호출할 수 있는 형태라고 생각이 들어요 앞에서 배웠듯이함수는 일급..

Swift 2024.05.21

Swift | self vs Selft에 관하여

안녕하세요!오늘은 self 와 Self에 관하여정리하고자 합니다 쉬우니까바로 습득이 가능하실거에요! 지금까지 소문자 self는 많이 사용했었답니다 특히 클래스에서 많이 사용했던걸로 기억하는데요보통 인스턴스나 값 자체를 치환하는 경우에도 사용합니다 코드를 통해서 알아보고자 합니다 self vs Self| 우선 소문자 self에 대해서 알아보고자 합니다self인스턴스를 가르키기 위해 사용하는 경우 class Person { var name: String init(name: String) { self.name = name }} 여기서 self는현재 객체(instance)를 가리킵니다인스턴스 내부에서 해당 인스턴스의 속성이나 메서드에 접근이 가능합니다 클래스 내부에서 보통 속성과 매개변수 이름이 동일한..

Swift 2024.05.21

Swift | Method Dispatch관하여

안녕하세요오늘은 공식문서에는 없지만Method Dispatch에 대해서 알아보고자합니다 Method Dispatch| 공식문서에는 없지만 이걸 남기는 이유는 컴퓨터가 동작하는 방식에 대해서 더 잘 이해하기 위해서정리했습니다 :) 우선 내가 알고있는 지식이라곤 컴파일 타임은 정적 타입 검사일 때런타임에는 동적 타입 검사이고컴파일은 기계어로 이해할 수 있는 0과 1로 변환되는 과정이며런타임은 컴파일을 거친 코드인 기계어가 사용자가 사용하는 순간이라고 알고 있었답니다 강의에서 자세하게 풀이해줬기 때문에좀 더 세세하게 나뉘고 있고 런타임과 컴파일 타입에서 일어날 수 있는 문제점에 대해서 한 번 더 고찰할 수 있었던 강의가 아닌가 싶었습니다 그리고 메서드 디스패치는 간단히어떤 메서드들의 특징에 대해서 다루는 시간..

Swift 2024.05.21

Swift | 고차함수 filter / reduce 관하여

안녕하세요고차함수 나머지 부분도 다루고자 합니다 filter와 reduce에 대해서 정리를 해봅시다 filter|특정조건을 만족하는 요소들만 걸러내는 함수새로운 컬렉션을 반환하고 원본 컬렉션의 요소 중 조건을 만족하는 요소들로 이루어진 배열을 생성합니다 기존 배열 등 각 아이템 조건을 확인하고 참을 만족하는 아이템을 걸러내서 새로운 배열을 만들어냅니다(각 아이템을 필터링해서 걸러내서 새로운 배열을 만들 때 사용합니다)   .filter로 통해서 조건을 통해서 배열을 반환하는걸 볼 수 있습니다  클로저를 사용하는 이유는더 간결하게 작성할 수 있기 때문입니다  evenNumbersArray같은 경우 첫 번째 필터 조건이 2로 나눴을 때 0인 경우이므로2,4,6,8로 줄어들고두 번 째 필터 조건이 5보다 작아..

Swift 2024.05.21

Swift | 고차함수 map / faltmap / compactmap에 관하여

안녕하세요 오늘은고차함수에 관하여 정리하고자 합니다 map/flatmap/compactmap 여러가지가 있는데요여기에 관하여 특징과 사용방법에 관하여 알아볼까요? map|각 요소에 대해 동일한 연산을 수행하고 그 결과를 새로운 컬렉션으로 반환하는 고차함수   함수를 인자로 받아 각 요소에 함수를 적용하고 그 결과 새로운 컬렉션을 반환하기 때문에코드의 간결성과 가독성, 재사용이 용이하고 컴파일러 최적화를 하기위한 성능에 좋다는 장점이 있습니다 그리고 기존 데이터를  변형하여 새로운 컨테이너를 만드는데 기존 데이터는 변경되는게 없답니다  map 기본형식  T타입의 transform을 받아 새로운 타입의 T타입의 컨테이너를 생성한다는 이야기랍니다예제를 통해서 좀 더 친숙해보자구용! 좀 더 추가적으로 말하자면T..

Swift 2024.05.21
반응형