본문 바로가기

전체 글82

[Swift] for 문 거꾸로 순회(stride), reverse VS reversed 알고리즘 문제를 풀다 보면 반복문을 반대로 돌려야 할 때가 종종 등장한다. 파이썬의 경우 for 문 안에 같이 적는 range에 step이 존재하여 큰 수부터 작은 수까지 step을 -1씩 하면 거꾸로 순회가 가능했다. 이와 같은 문법이 swift에서는 어떻게 작성해야하는지 찾아보았다. 또한 배열을 거꾸로 순회하는 경우에는 reversed() 함수를 사용해 뒤집으면 되는데 공식 문서를 읽어보던 중 reversed()와 reverse() 두가지 함수의 재밌는 차이점을 발견하여 같이 정리해볼까 한다. 연속되는 범위 거꾸로 순회하기 파이썬의 range의 step과 같은 역할을 해주는 swift 함수는 stride()이다. stride(from:to:by:) to를 포함하지 않음 stride(from:throu.. 2024. 3. 11.
배열 Safe Index - 안전하게 배열 조회하기 배열은 인덱스를 통해 빠른 접근이 가능하다. 하지만 인덱스 범위를 넘게 되면 런타임 에러가 발생해 앱을 강제 종료 시킬 수 있어 치명적이다. 프로젝트 진행 중 인덱스를 접근할 일이 많았고, 이는 위험성을 가지고 있기 때문에 멘토님께서 safe Index를 사용하는 방법을 권유하셨다. 따라서 앱에서 인덱스를 통한 접근이 필요할 시 subscript를 사용하여 안전하게 접근할 수 있는 방법을 간단하게 정리해 보겠다. extension Array { subscript (safe index: Int) -> Element? { return indices ~= index ? self[index] : nil } } indices는 Collection 타입의 유효범위를 나타낸다. 예를 들어 arr = [1,2,3] 일.. 2024. 2. 29.
Struct VS Class 메모리 관점 고찰과 언제 써야할까? Struct VS Class 성능 비교 메모리 저장 Swift의 struct와 class의 차이는 메모리의 여러 영역 중 Stack과 Heap에 관련되어 있다. struct → Stack 할당 (정적 할당 : 컴파일 시 크기 결정) class → Heap 할당 (동적 할당 : 런타임 시 동적으로 할당됨) Stack은 정적 타입으로 간단한 자료구조 형태를 가지며 O(1)의 시간복잡도를 가지고 간단하게 할당 해제할 수 있는 반면에 Heap은 메모리에 연속적으로 존재하지 않아 복잡한 과정을 거쳐 할당 해제 시 비용이 스택보다 더 크다. Dispatch https://bang-tori.tistory.com/77 접근제한자 정리 및 성능 향상 이유 + final 제한자 프로젝트를 진행할 당시 적절한 접근제한자를 .. 2024. 2. 28.
[IOS] URLSessrion을 통해 CLOVA Sentiment API 사용기 프로젝트 당시 API를 불러오기 위해 URL Session을 사용했었다. 작성했던 코드를 예제 삼아 URL Session 내용을 다시 한번 공부하고 정리해볼까 한다. URL Session이란? 네트워크 데이터 전달 작업에 관련된 일을 하는 개체 URLSessionConfiguration shared : 기본 요청을 하기 위한 세션으로 싱글톤으로 사용 ( 맞춤 설정 불가 ) " URLSession.shared default : 가장 기본적인 통신 방법으로 shared랑 비슷하지만 맞춤 설정 가능 URLSession(configuration:. default) ephemeral : 쿠키나 캐시, 인증을 저장하지 않을 때 사용 (사파리 개인정보보호 모드) URLSession(configuration:. eph.. 2024. 2. 27.