본문 바로가기

전체 글

(87)
[iOS] iOS 파일 시스템 File System 파일 시스템은 데이터 파일, 앱 및 운영 체제 자체와 관련된 파일의 영구 저장을 처리합니다. 따라서 파일 시스템은 모든 프로세스에서 사용되는 기본 리소스 중 하나입니다. iOS File System Apple 생태계의 기본 파일 시스템은 APFS로, macOS, iOS, watchOS 및 tvOS의 기본 파일 시스템입니다. (iOS 10.3 이상, macOS HighSierra 이상) iOS 파일 시스템은 자체적으로 실행되는 앱에 맞춰져 있습니다. 시스템을 단순하게 유지하기 위해 iOS 장치 사용자는 파일 시스템에 직접 액세스할 수 없으며 앱은 해당 규칙을 따라야 합니다. (사용자가 파일 시스템에 직접 액세스 할 수 없다면 파일 시스템이 내부 규칙을 통해서만 관리되기 때문에 문제의 ..
[TIL] 20231124 Initalization (초기화) 초기화는 class, struct, enum의 인스턴스의 사용을 위해 준비하는 과정 새로운 인스턴스를 사용할 준비를 하기 위해 인스턴스의 저장 프로퍼티의 초기값을 설정하는 등의 일을 한다. 이니셜라이저 init 프로퍼티 초기값을 지정하기 어려운 경우에는 이니셜라이저 init을 통해 인스턴스가 가져야 할 초기값을 전달할 수 있다. 이니셜라이저는 새로운 인스턴스를 생성할 수 있는 특별한 메서드가 되는 것 주요 역할은 새 인스턴스가 처음 사용되기 전에 올바르게 초기화되었는지 확인하는 것이기 때문에 값을 반환하지 않음 initializer의 종류 클래스의 모든 프로퍼티는 초기화 과정에서 반드시 초기값이 할당되어야 함 상속받은 클래스가 있는 경우, 상위 클래스의 프로퍼티도 모두..
[TIL] 20231123 구조체(struct)와 클래스(class) 구조체와 클래스는 프로그래머가 데이터를 용도에 맞게 묶어 표현하고자 할 때 유용함 구조체와 클래스는 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있다. 클래스나 구조체를 정의한다 == 하나의 새로운 사용자 정의 데이터 타입을 만들어 주는 것 구조체 vs. 클래스 구조체와 클래스 비교(공식문서 번역, WWDC 자료 참고) 공통점 값을 저장할 프로퍼티를 정의할 수 있다. 기능을 제공하는 메서드를 정의할 수 있다. 서브스크립트를 정의할 수 있다. 이니셜라이저를 통해 초기 상태를 설정할 수 있다. extension을 사용해 기능을 확장할 수 있다. 특정 종류의 표준 기능을 제공하는 프로토콜을 준수하는 것이 가능하다. 차이점 class 참조 타입(Re..
[TIL] 20231122 Optional 🔽 Optional과 Optional Unwrapping에 대한 내용 정리 [Swift] Optional 안녕하세요 제인입니다 :) TIL을 작성하다가 옵셔널에 대해 정리를 하게 되었는데요, 그냥 옵셔널 뽀개기로 제대로 정리를 하자 싶어서 Optional에 대한 공식문서와 깃허브에 오픈된 Optional 내부 구 janechoi.tistory.com + Optional 타입의 값을 == 연산자로 비교할 수 있는 이유? Optional의 값 비교가 가능한 이유는 Swift에서 Optional을 구현할 때, ==, =! 연산자를 구현해두었기 때문 Equatable 프로토콜을 채택하여 == 연산자를 구현하는 내부 코드를 확인할 수 있음 extension Optional: Equatable wh..
[Swift] Optional 안녕하세요 제인입니다 :) TIL을 작성하다가 옵셔널에 대해 정리를 하게 되었는데요, 그냥 옵셔널 뽀개기로 제대로 정리를 하자 싶어서 Optional에 대한 공식문서와 깃허브에 오픈된 Optional 내부 구조 코드를 토대로 옵셔널에 대해 정리를 쭉 해보려 합니다! Optional (옵셔널) 옵셔널은 값이 '있을 수도, 없을 수도 있음' 을 나타내는 표현입니다. 이는 '변수나 상수 등에 꼭 값이 있다는 것을 보장할 수 없습니다. 즉, 변수 또는 상수의 값이 nil일 수도 있다'는 것을 의미 @frozen enum Optional: ExpressibleByNiliteral { case none // nil case some(Wrapped) // optional value } 옵셔널은 제네릭이 적용된 열거형..
[TIL] 20231121 타입, 인스턴스, 메서드, 프로퍼티 - 타입: 개체를 대표하는 표현. 개체의 공동된 특성을 일반화(더 나아가 추상화)하여 표현한 것 Swift에서 타입을 나타내는 방식: 구조체, 클래스, 열거형, 프로토콜 - 인스턴스: 타입으로부터 실체화되어 메모리에 할당된 실체 (클래스, 구조체, 열거형에서 생성된 객체) - 메서드: 인스턴스 또는 타입이 공통적으로 할 수 있는 행위 - 프로퍼티: 클래스, 구조체, 열거형 등에 관련된 값 클로저 vs. 함수 vs. 메서드 이름 설명 클로저(Closure) 코드의 블록 함수(Function) 이름을 갖는 클로저로 특정 타입에 연관되지 않고 모듈 전체에서 전역적으로 사용할 수 있는 코드의 블록 메서드(Method) 함수 중 구조체, 클래스, 열거형 등 특정 타입에 연관되어..
[Swift] 정렬 메서드 정복하기 (sort(), sorted()) 안녕하세요 제인입니다 :) 이번 게시글에서는 Swift의 정렬 메서드에 대해 정리해보려고 합니다. 정렬 메서드에 대한 기본적인 내용 정리와 더불어 정렬 조건 설정, 다중 정렬 등 활용 방법까지 총정리를 해보고자 제목을 정복하기로 지어보았습니다 😀 정렬 메서드는 알고리즘 문제 풀이 시에도 많이 활용이 되는 만큼 확실히 정리를 해두고 기억해둡시다!!! 정렬 메서드 네 가지 비교 먼저, 공식 문서를 통해 기본적인 내용부터 정리해보도록 하겠습니다. 정렬 메서드는 공식문서의 Array 부분에 나와있는데요, 공식 문서에 나와있는 네 가지 메서드를 한번 살펴봅시다. (정렬 메서드는 Array에서만 사용가능한 메서드는 아니고, RandomAccessCollection 프로토콜을 준수하는 컬렉션 타입이라면 사용 가능합니..
[Algorithm/Swift] 프로그래머스(Lv.3) - 표 편집 안녕하세요 제인입니다 :) 연결리스트를 활용하는 문제를 풀어보게 되어 해당 내용에 대해 정리해보려고 하는데요, 문제를 풀이하며 연결리스트(LinkedList)를 Swift로 구현하는 방법에 대해서 간단하게 정리해보겠습니다! 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음 접근 저도 처음부터 연결리스트를 써야겠다는 아이디어를 떠올리지 못해 한 번에 맞추지 못했습니다,, 선택된 행을 가리키는 포인터를 두고 명령어 케이스에 따라 알맞은 처리를 할 수 있도록(포인터 이동, 삭제된 행 인덱스 기록 등) 포인터를 이용해 구현하는 방법으로 풀..