안녕하세요. 도미닉입니다. 오늘은 의존성 주입에 대해서 알아보겠습니다. 우선 의존성이 무엇인지에 대해 정리해보겠습니다. 의존성이란? 위 코드와 같이 Programmer 구조체에서 startProgramming 함수가 호출되기 위해서는 Coffee 구조체가 필요합니다. 이 때 Programmer 구조체는 ‘Coffee 객체에 의존성을 가진다’라고 합니다. 위 예제에서 Coffee 구조체의 drink 메소드가 없어지거나 drink 메소드의 내용이 바뀌면 그에 따라 Programmer 의 startProgramming 메소드가 변경되어야 합니다. 이럴 때 코드의 재활용성이 떨어지고 결합도가 올라가게 됩니다. 아래에서 의존성 뒤에 붙는 주입이라는 단어에 대해서 알아보겠습니다. 주입이란? 위에 코드를 보시면 Co..
안녕하세요. 도미닉입니다. 오늘은 이니셜라이저에 대해서 알아보겠습니다. “이니셜라이저”란? 이니셜라이저는 한글로 초기화입니다. 초기화하면 어떤 단어가 생각나시나요? 리셋, 재부팅 같은 단어가 생각납니다. 그렇습니다. 초기상태로 셋팅해주는 것을 초기화라고 합니다. 스위프트에서 “이니셜라이저”란? 구조체와 클래스을 활용하고자 한다면 초기화해주어야 합니다. 이니셜라이저는 새로운 인스턴스를 만들어주는 과정이라고 할 수 있습니다. 이니셜라이저라는 작업을 통해 스위프트는 구조체와 클래스에 메모리를 할당하여 인스턴스로 만들어줍니다. 스위프트에서는 모든 프로퍼티(속성)에 값이 할당되어야 정상적으로 초기화가 되었다고 인식하며 하나의 프로퍼티라도 값이 할당되지 않았다면 오류가 발생합니다. 구조체의 이니셜라이저 구조체를 선..
안녕하세요. 도미닉입니다. 오늘은 Access Control 에 대해서 알아보겠습니다. Access Control 이란? Access Control 을 해석하면 무슨 뜻일까요? 접근 제어 입니다. 그렇다면 접근 제어하면 무슨 생각이 드시나요? 접근 금지라는 단어도 생각이 납니다. 관계자외 출입금지라는 표지판도 많이 붙어있죠. 어느 Access Level 까지 접근을 허용할지 제어하는 것을 접근 제어라고 합니다. Access Levels 이란? 해석하면 접근 단계입니다. 스위프트의 접근 단계는 5단계가 있습니다. open - 모듈 외부에서도 접근 가능 public - 모듈 외부에서도 접근 가능 internal - 하나의 모듈 내부에서만 접근 가능 fileprivate - 하나의 파일 내에서만 접근 가능 p..
안녕하세요. 도미닉입니다. 오늘은 iOS 테이블뷰에서 셀의 재사용에 대해서 정리해보겠습니다. dequeueReusableCell(withIdentifier:for:) 일반적으로 테이블뷰에서 셀을 리턴하는 함수에서 셀을 재사용하도록 습관적으로 아래와 같이 코드를 작성하고 있습니다. 이 dequeueReusableCell(withIdentifier:for:) 메소드는 무엇일까요?지정된 재사용 식별자(indexPath)에 대해 재사용이 가능한 테이블 뷰 셀 객체를 반환하고 테이블뷰에 추가한다. 라고 공식 문서에 나와있습니다. 파라미터와 리턴되는 값이 대해 정리해보겠습니다. 파라미터 identifier 재사용할 셀 객체를 식별하기 위한 문자열입니다. 이 매개 변수는 nil이 아니어야합니다. indexPath 셀..
안녕하세요. 도미닉입니다. 오늘은 클로저와 고차함수에 대해서 알아보겠습니다. 클로저란? 클로저는 기능을 갖는 독립적인 코드 블록입니다. 말이 조금 어려운데요. 기능을 갖는 코드 블록을 우리는 이미 알고 있습니다. 맞습니다. 함수입니다. 그렇다면 함수와 클로저의 차이는 무엇일까요? 아래 설명을 보시면 이해하실 수 있으실 겁니다. 클로저를 선언하는 방법은? 클로저는 선언하는 부분에서부터 함수와 차이점을 보입니다. 클로저는 함수와 달리 이름을 적지않습니다. 이름을 적지 않음으로써 아래와 같은 사실을 알 수 있습니다. 클로저는 선언해놓고 호출하는 방식이 아니라 필요할 때마다 코드 블록을 작성해야한다. 자주 사용하는 코드 블록을 선언해놓는 함수와 달리 매번 다른 코드 블록을 사용할 때 필요할 것 같다. 그렇다면 ..
안녕하세요. 도미닉입니다. 오늘은 스위프트의 열거형에 대해서 알아보겠습니다. 열거형 이란? 열거는 무슨 뜻일까요? 국어사전에 검색해보았습니다. “여러 가지 예나 사실을 낱낱이 죽 늘어놓음.” 이라고 나옵니다. 그렇다면 열거형은 “여러 가지 예나 사실을 낱낱이 죽 늘어놓음” + “형태” 라고 이해할 수 있겠습니다. 스위프트에서 열거형 이란? 스위프트에서 열거형은 Enumeration 이라고 합니다. 줄여서 Enum 이라고도 합니다. 열거형은 같은 성질을 가지는 여러 것들을 늘어놓는데 사용할 수 있습니다. 예를 들어 무게라는 성질을 가지는 것에는 어떤 것이 있을까요? g, kg, oz, lb 등이 있습니다. 이러한 한가지 성질을 가지는 것들을 묶어서 사용하는데 용이한 타입이 열거형입니다. 열거형을 선언하는 ..
안녕하세요 도미닉입니다. 콜 바이 벨류, 콜 바이 레퍼런스 많이 들어보셨을 겁니다. 스위프트에서 inout 을 활용하여 포인터에 직접 접근할 수 있습니다. 위에 소스는 inout 을 통해 직접 포인터에 접근하여 두 변수의 값을 바꾸는 예제입니다. 함수에서 서로 값이 바뀐다면 그 값은 복사되어 사용된 값이므로 원본에는 영향을 주지 않습니다. 스위프트에서는 함수에 매개변수로 들어온 값을 수정할 수 조차 없습니다. 위와 같이 inout 을 통해 매개변수에 접근한다면 조금 더 효율적인 프로그래밍이 가능합니다. 직접 포인터에 접근하는 것은 자유도가 있지만 예상치 못하게 원본에 대한 수정이나 훼손이 가능하므로 주의하여야 합니다. 조금 더 안전한 메소드는 아래와 같습니다. 이상으로 inout 에 대해서 알아봤습니다...
안녕하세요. 도미닉입니다. 테이블뷰를 만들다가 보면 셀 사이에 구분선이 생깁니다. 이 구분선을 지우고 싶은 경우가 있는데요. 구분선을 지우는 방법에 대해서 알려드리겠습니다. 1. chatTableView.separatorColor = UIColor.white 배경 색이 흰색이라면 구분선의 색이 흰색이 되면 안보이게 되겠죠. 위에 코드처럼 tableView 의 separatorColor 를 배경색과 같은 색(보통 흰색)으로 바꿔주면 구분선이 보이지 않습니다. 2. chatTableView.separatorStyle = .none 구분선의 스타일을 없도록 구성해줄 수도 있습니다. 위에 코드처럼 tableView 의 separatorStyle 을 .none 으로 바꿔주면 구분선이 보이지 않습니다. 간단하게 두..
안녕하세요. 도미닉입니다 오늘은 패턴에 대해서 알아보겠습니다. 패턴이란 소스의 양을 줄여서 쓰고 읽기 쉽게 정해놓은 구조 라고 생각할 수 있습니다. 패턴 매칭이란. 코드에서 패턴을 찾아내고 활용하는 것이라고 할 수 있겠습니다. 패턴에는 두가지 큰 유형이 있습니다. 모든 종류의 값에서 성공적으로 동작하는 패턴과 런타임 안에 지정된 값에 따라서 동작하지 못하는 패턴입니다. 첫 번째 종류의 패턴은 단순 변수, 상수 및 옵셔널 바인딩에서 값을 소멸시키는 데 사용됩니다. 여기에는 와일드 카드 패턴, 식별자 패턴 및 이를 포함하는 값 바인딩 패턴 또는 튜플 패턴이 포함됩니다. 이러한 패턴에서 타입 지정하여 특정 타입의 값만 일치하도록 제한 할 수 있습니다. 두 번째 종류의 패턴은 전체 패턴 일치에 사용되며, 여기서..
앞에서 소개드린 구조체 안에 내용 중에 프로퍼티에 대해서 먼저 알아보겠습니다. 프로퍼티는 저장 프로퍼티, 연산 프로퍼티, 타입 프로퍼티로 나뉘어집니다. 첫번째로 저장 프로퍼티는 가변 프로퍼티와 불변 프로퍼티로 나뉩니다. 구조체는 기본적으로 모든 저장 프로퍼티를 포함하는 이니셜라이저가 자동으로 생성됩니다. 위에 Cat 구조체에서 그것을 사용해보았습니다. 저장 프로퍼티는 기본값을 설정할 수도 있으며 기본값이 있는 경우 이니셜라이저 없이 인스턴스 생성이 가능합니다. struct Coordinate { var x: Int = 0 var y: Int = 0 } let point: Coordinate = Coordinate() 만약 저장 프로퍼티가 옵셔널이면 해당 프로퍼티는 초기값을 넣어주지 않아도 됩니다. 지연 ..
- Total
- Today
- Yesterday
- 데이터베이스
- 프로그램
- C
- IOS
- 단어
- 형용사
- 스위프트
- 왕초보 영단어1
- 테라스캔
- MySQL
- 매트랩
- terascan
- 프로그래밍
- exercise
- database
- Matlab
- 뇌를 자극하는 C 프로그래밍
- 시원스쿨
- 배열
- Apple
- 리눅스
- 애플
- 함수
- 연습문제
- 반복문
- 뇌를 자극하는 C프로그래밍
- Swift
- 포인터
- 영어
- Xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |