일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python
- Swift
- centOS
- centOS7
- 클라우드
- NGINX
- 네트워크
- 인프라
- devops
- 운영체제
- 부스트코스
- swift 클로저
- kubernetes
- AWS
- 도커 이미지
- 도커
- linux
- ios
- C++
- k8s
- boj
- 도커 명령어
- 컨테이너
- 데브옵스
- docker
- os
- 프로세스
- 리눅스
- 쿠버네티스
- 도커 컨테이너
- Today
- Total
목록iOS/Swift (7)
귀염둥이의 메모
ARC(Automatic Reference Counting) Swift에서는 앱의 메모리 사용을 관리하기 위해 ARC(Automatic Reference Counting)을 사용합니다. 참조 횟수를 자동으로 관리하기 때문에 대부분의 경우에 개발자는 메모리 관리에 신경 쓸 필요가 없고 ARC가 알아서 더 이상 사용하지 않는 인스턴스를 메모리에서 해지합니다. 하지만 몇몇의 경우 ARC에서 메모리 관리를 위해 코드의 특정 부분에 대한 관계에 대한 정보를 필요로 합니다. 참조 횟수는 클래스 타입의 인스턴스에만 적용되고 값 타입인 구조체 열거형 등에는 적용되지 않습니다. ARC의 동작 클래스의 새로운 인스턴스를 만들 때마다 ARC는 인스턴스 정보를 담는데 필요한 적정한 크기의 메모리를 할당합니다. 이 메모리는 그..
클로저의 값 캡쳐(Capturing Values) 클로저는 참조 타입(Reference Type)입니다. 클로저가 매개변수나 지역변수가 아닌 주변 외부의 context를 사용하기 위해 주변 외부의 context를 참조하는 것 원본 값이 사려져도 클로저의 body 안에서 그 값을 활용할 수 있습니다. 예제 코드 func makeIncrementer(forIncrement amount: Int) -> () -> Int { var runningTotal = 0 func incrementer() -> Int { runningTotal += amount return runningTotal } return incrementer } let incrementByTen = makeIncrementer(forIncreme..
enum(열거형) 유사한 종류의 여러 값을 한 곳에 모아서 정의한 것입니다. enum 자체가 하나의 데이터 타입입니다. (카멜케이스를 사용하여 이름을 정의) 각 case는 그 자체가 고유의 값입니다. (각 case에 자동으로 정수값이 할당되지 않음) enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 // 한 줄에 여러개 정의 가능 } enum Weekday { case mon case tue case wed case thu, fri, sat, sun } enum 사용 타입이 명확할 경우, 열거형의 이름을 생략할 수 있습니다. switch 구문에서 사용하면 좋습니다. enum Weekday { case mon case tue case wed case thu, fri, sa..
클로저(Closure) 실행 가능한 코드 블럭입니다. 함수와 다르게 이름 정의는 필요하지 않으며, 매개변수 전달과 반환 값이 존재할 수 있습니다. 함수는 이름이 있는 클로저입니다. 일급 객체(First-class-citizen)로 전달 인자, 변수, 상수 등에 저장 및 전달이 가능합니다. 참조타입입니다. 표현방식 중괄호 { }로 감싸져있으며, 괄호를 이용해 파라미터를 정의합니다. -> 를 이용하여 반환 타입을 명시합니다. "in" 키워드를 이용해 실행 코드와 분리합니다. { (매개변수 목록) -> 반환타입 in 실행 코드 } 사용예시 // sum이라는 상수에 클로저를 할당 let sum: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let resu..
스위프트 타입 캐스팅 인스턴스의 타입을 확인하는 용도로 쓰입니다. 클래스의 인스턴스를 부모(Up) 혹은 자식(Down) 클래스의 타입으로 사용할 수 있는지 확인하는 용도 is, as를 사용합니다 타입 캐스팅 예제 class Person { var name: String = "" func breath() { print("숨을 쉽니다.") } } class Student: Person { var school: String = "" func goToSchool() { print("등교를 합니다.") } } class UniversityStudent: Student { var major: String = "" func goToLib() { print("도서관을 갑니다..") } } // 인스턴스 생성 var j..
구조체(struct)와 클래스(class) 공통점 값을 저장하기 위해 프로퍼티를 정의할 수 있다. 기능 수행을 위해 메서드를 정의할 수 있다. 서브스크립트 문법을 통해 구조체 또는 클래스가 가지는 값에 접근하도록 서브스크립트 정의 가능. 초기화될 때의 상태를 지정하기 위해 이니셜라이저 정의 가능. extension을 통해 확장 가능. 특정 protocol 준수 가능. 차이점 구조체(struct) 값 타입(Call by Value) : 데이터를 전달 할 때 값을 복사하여 전달. Stack memory 영역에 할당 상속 불가능 클래스(class) 참조 타입(Call by Reference) : 데이터를 전달 할 때 값의 메모리 위치를 전달. Heap memory 영역에 할당 상속 가능 struct Value..
Optional 값이 있을 수도, 없을 수도 있음을 표현. nil(없음)이 할당 될 수 있는지 없는지 표현. nil은 Optional 변수 이외에서 사용불가. Optional을 쓰는 이유 명시적 표현 nil의 가능성을 코드만으로 표현가능. 문서/주석 작성 시간 절약가능. 안전한 사용 전달받은 값이 Optional이 아니라면 nil 체크를 하지 않고 사용가능. 예외 상황을 최소화한다. Optional 선언 var optionalValue: Optional = nil var optionalValue: Int? = nil // 같은 표현 optionalValue = 30 var someValue = optionalValue // someValue는 Optional타입 // var someValue: Int =..