Swift
-
문자열: 출력 형식 지정자Swift/swift 문법 2023. 5. 8. 23:10
String(format: String, arguments: CVar) -> String()은 생성자다. (타입 변환 X) String(format: "%.4f", str) -> 소수 4번째 자리까지 반환. String(format: "%03d", str) %d -> 정수 -> 소수 3번째 자리까지 반환. (앞에 0 포함) String(format: "value: %@", str) @ -> 이 자리에 문자열을 넣을 것이다. 세자리수마다 콤마 넣기 numberFormatter.numberStyle = .decimal numberFormatter.string(for: price)
-
모나드Swift/swift 문법 2023. 4. 27. 18:00
: 디자인 패턴 or 자료구조, 특정 기능이 아님 - 순서가 있는 연산을 처리할 때 자주 활용하는 디자인 패턴 - 모나드는 닫힘 함수객체이다. 프로그래밍에서 모나드가 갖추어야 하는 조건 1. 타입을 인자로 받는 타입(특정 타입의 값을 포장) 2. 특정 타입의 값을 포장한 것을 반환하는 함수/ 메서드가 존재 3. 포장된 값을 변환하여 같은 형태로 포장하는 함수/메서드가 존재 예시: 옵셔널 컨텍스트 : 콘텐츠를 담은 그 무엇인가 ex) optional(2) optional() -> 컨텍스트 2 -> 콘텐츠 func addThree(_ num: Int) -> Int { return num + 3 } addThree(Optinal(2)) : 실행 불가(자료형이 달라서 실행 불가하다) Optinal(2).map(..
-
스위프트의 메모리 관리 모델Swift/swift 문법 2023. 4. 24. 19:38
값 형식과 참조 형식 값 형식 : 필요 시 항상 메모리의 값이 복사되어 전달됨 (값의 저장:stack) 값이 들어있는 스택의 스코프가 종료되면 메모리에서 자동으로 제거된다. 참조형식: 메모리의 주소를 전달 (값의 저장: Heap) -> Reference Counting을 통해 메모리를 관리 (ARC) -> 힙 영역에 할당되는 데이터는 개발자가 잘 관리해야한다. 할당이 해제되지 않으면 메모리 누수 현상이 발생. 강한참조 사이클 참조: 그 대상을 가리키고 (메모리의 주소값을 다른 인스턴스에서 저장하고 있음)있음 약한참조(weak) 예시 weak var vehicle: Car? 의미: Dog 타입의 인스턴스를 가리킬건데, RC는 올리지 않겠다. 참조하는 인스턴스가 없으면 nil을 할당할것. 비소유 참조 (un..
-
프로토콜Swift/swift 문법 2023. 4. 24. 14:44
프로토콜 이란? : 프로토콜은 특정 기능 수행에 필수적인 요수를 청의한 청사진(blueprint)입니다. 프로토콜을 만족시키는 타입을 프로토콜을 따른다(conform)고 말합니다. 프로토콜에 필수 구현을 추가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장(extend)하는 것이 가능합니다. 프로토콜 -> 클래스와 상속의 단점 보완 1. 하나의 클래스만 상속 가능 2. 기본적인 상위 클래스의 메모리 구조를 따라갈 수 밖에 없음. 3. 클래스 에서만 가능 프로토콜 - 선택적 요구사항의 구현 :메서드 선언 앞에 @objc를 붙여주면 된다. 프로토콜의 확장은 클래스와 구조체가 메서드를 호출하는 방식이 다르다. [인스턴스의 타입을 해당 클래스/구조체로 인식한 경우] 클래스 -> V 테이블 구조체 -> 코드주소..
-
클래스와 구조체Swift/swift 문법 2023. 4. 22. 06:02
클래스 -> 틀 객체 -> 실제 데이터 (in swift) 클래스의 인스턴스 -> 객체 인스턴스 클래스 or 구조체를 통해서 메모리에 찍어낸 것 구조체가 클래스보다 가볍다. 대다수의 경우에는 구조체를 사용하고 상속과 같은 기능이 필요할 때는 클래스를 사용한다. 구조체 인스턴스의 데이터를 모두 스택에 저장한다. 스택: 함수가 실행될 때 사용됨 -> 함수의 실행에 따라 생기고 지워진다. 값 복사 클래스 참조형식(: 복사 시 하나의 데이터를 가리킨다) 인스턴스 데이터는 힙에 저장, 해당 힙을 가리키는 변수는 스택(메모리 주소값이 저장되어있음)에 저장 찍어낸 인스턴스를 쓰려면 이름이 필요한데 그 이름이 변수에 담겨 있고, 실제적으로 그 이름은 힙의 인스턴스를 가리키고 있는 것. [예시] var apple = A..