일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커 이미지
- 데브옵스
- boj
- centOS
- AWS
- 클라우드
- os
- 리눅스
- 프로세스
- 부스트코스
- kubernetes
- ios
- docker
- C++
- Python
- 도커 명령어
- 도커 컨테이너
- 네트워크
- swift 클로저
- Swift
- 운영체제
- k8s
- linux
- NGINX
- centOS7
- 컨테이너
- 쿠버네티스
- devops
- 인프라
- 도커
- Today
- Total
목록iOS (17)
귀염둥이의 메모
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..
기본적인 네비게이션바는 그림자(구분선)이 있습니다. 이를 제거하기 위해서 viewDidLoad()에 다음과 같이 작성해줍니다. navigationController?.navigationBar.shadowImage = UIImage() shadowImage의 기본값은 nil 이며, 그림자 이미지가 들어갑니다.
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..
UIKit에서 기본이 되는 좌표계는 좌측 상단 모서리를 원점으로 하며, 제일 왼쪽의 제일 위의 지점이 (0, 0)입니다. 원점으로부터 아래쪽, 오른쪽 방향으로 확장됩니다. 좌표값은 해상도와 상관없이 콘텐츠의 위치를 잡는 부동소수점을 사용하여 나타냅니다. 프레임(frame)은 뷰의 크기와 위치를 슈퍼뷰(SuperView)의 좌표계를 기준으로 합니다. 바운드(bounds)는 뷰의 크기와 위치를 해당 뷰 자신의 좌표계를 기준으로 합니다. frame과 bounds는 CGRect라는 구조체를 통해서 표현됩니다. CGRect는 사각형의 크기와 위치에 대한 정보를 담고 있습니다. CGRect의 origin프로퍼티는 CGPoint 타입으로 사각형의 시작점을 나타냅니다. CGRect의 size프로퍼티는 CGSize타입으..
클로저(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..
뷰는 위와 같은 생명 주기를 가지게 된다. 뷰의 상태 변화 메서드 뷰가 나타나거나 사라지는 등 뷰가 화면에 보이는 상태가 변화할 때 호출되는 메서드 viewDidLoad 뷰 계층이 메모리에 로드된 직후 호출되는 메서드 뷰의 추가적인 초기화 작업을 하기 좋은 시점 메모리에 처음 로딩 될때 1회 호출되는 메서드, 메모리 경고로 뷰가 사라지지 않는 이상 다시 호출 X viewWillAppear 뷰가 뷰 계층에 추가되고 화면이 표시되기 직전에 호출되는 메서드 뷰의 추가적인 초기화 작업을 하기 좋은 시점 다른 뷰로 이동했다가 되돌아오면 재호출 되며, 화면이 나타날 때마다 수행하는 작업을 하기 좋은 시점 viewDidAppear 뷰가 뷰 계층에 추가되어 화면이 표시되면 호출되는 메서드 뷰를 나타내는 것과 관련된 추..
Singleton Pattern 특정 용도로 객체를 하나만 생성하여, 공용으로 사용하고 싶을 때 사용하는 디자인 패턴. 싱글턴은 특정 클래스의 인스턴스가 오직 하나임을 보장한는 객체. 특정 클래스의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있다. class StudentInfo { var name: String? var major: String? var age: Int? } 학생의 정보를 저장하는 StudentInfo가 있고 3개의 뷰컨트롤러 A ViewController, B ViewController, C ViewController가 있다. A ViewController : 학생의 name을 입력 받는다. B ViewController : 학생의 major를 입력 받는다..
Delegate의 뜻 [명사] 대표(자), 위임, 대리(자) [동사] (권한, 업무 등을)위임하다 Delegation Design Pattern Foundation, UIKit, AppKit 그리고 Cocoa Touch 등 애플의 프레임워크에서 광범위하게 활용하고 있다. 주로 프레임워크 객체가 위임을 요청하며, 커스텀 컨트롤러 객체가 위임을 받아 특정 이벤트에 대한 기능을 구현한다. 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 해준다. Delegate는 어떤 객체가 해야할 일을 부분적으로 확장해서 대신 처리를 해준다. 예제 (TextField) 1) Delegate 사용 X Click 버튼을 누르면 라벨의 텍스트를 내가 현재 쓴 TextField안의 값으로 ..