-
[Swift] 프로토콜 속성 요구사항 (Property Requirements)iOS/🟠 Swift 2021. 1. 15. 14:27
참고 자료: Protocols - swift.org var protocol Figure { var name: String { get set } } 프로토콜에서 속성 선언 앞에 붙는 `var` 키워드는 속성의 가변성 과는 관련이 없습니다. 프로토콜에서 속성은 무조건 앞에 `var` 키워드를 붙여야합니다. 또한 저장속성 혹은 계산속성만으로 구현을 강제할 수도 없습니다. 속성의 가변성은 변수 의 타입 뒤에 붙는 { get set } 의 조합 으로 결정됩니다. get , set 이 모두 있다면 읽기 쓰기를 모두 가능하게 구현해야 하고, get 만 있는 속성이라면 읽기만 가능해도 프로토콜을 따르는 것입니다. 읽기 쓰기를 모두 가능하게 구현해도 됩니다. gettable: 속성을 읽기 가능하게 만드는 것 settab..
-
[Swift] 프로토콜 개요 (Protocol Overview)iOS/🟠 Swift 2021. 1. 15. 14:13
참고 자료: Protocols - swift.org 개요 프로토콜은 요구사항입니다. 프로토콜에는 구현해야하는 멤버들의 목록이 나열되어 있습니다. 프로토콜을 채용한 형식은 요구사항을 반드시 모두 구현해야 합니다. " When you adopt protocol, you should conform to protocol." 이것을 Adopting Protocol 이라고 하며 `프로토콜을 따른다`, `프로토콜을 채용한다` 라고 표현합니다. 프로토콜에는 구현 내용은 들어가 있지 않고, 채용한 타입이 직접 구현을 합니다. 프로토콜은 프로토콜 간 상속을 지원하며, 클래스와 달리 다중 상속도 지원합니다. 즉, 하나의 프로토콜은 여러개의 프로토콜을 동시에 상속받을 수 있습니다. enum, struct, class 가 프로..
-
Roadmap (1) - Computer NetworkGeneral/🕸 Network 2021. 1. 14. 22:20
강의: 이화여대 KOCW 컴퓨터 네트워크 교안: Computer Networking: A Top Down Approach 인터넷의 구성요소 크게 3가지입니다. 1. Hosts 인터넷의 가장자리에 위치한 사용자 컴퓨터와 서버 communication application을 hosting 하고 있기 때문에 붙여진 이름 2. 라우터 혹은 스위치 네트워크의 중앙에 위치하여, 사용자의 메시지가 목적지를 찾아가게 해 줍니다. 3. 마지막으로 위 둘을 연결해주는 link ( 혹은 communication link) 물리적인 회선들 인터넷은 네트워크들의 네트워크 " networks of networks " 여러가지의 네트워크들로 구성이 되어 있습니다. 프로토콜 표준화가 매우 중요합니다. 프로토콜이란? 통신 약속으로서,..
-
The Role of View Controllers (3) - Overview - View Controller Programming Guide for iOSiOS/🍎 Documentation 2021. 1. 14. 01:20
출처 : Apple Developer Documentation Resource Management UIViewController는 더 이상 필요하지 않은 자원을 자동으로 메모리 해제합니다. 하지만 이것을 서브 클래싱한 커스텀 코드에서, 개발자가 명시적으로 생성한 객체들은 그것을 만든 사람이 직접 관리해주어야 합니다. 가용 메모리가 적어졌을때, UIKit은 앱들에게 필요하지 않은 리소스를 free up ( = release = 메모리 해제 ) 할 것을 요청합니다. 개발자가 이것을 이용해 메모리 해제를 할 수 있는 방법은 VC에 didReceiveMemoryWarning 메소드를 구현하는 것입니다. 이 메소드에서 더 이상 필요하지 않은 참조를 지울 수 있습니다. 예를 들어 캐싱된 데이터를 지울 때 사용할 수..
-
The Role of View Controllers (2) - Overview - View Controller Programming Guide for iOSiOS/🍎 Documentation 2021. 1. 14. 01:06
출처 : Apple Developer Documentation Data Marshaling marshal = organize View controllers (이하 VC)는 그 계층에 있는 view 들과 앱에서 관리하는 데이터들의 중계자 (intermediary)입니다. UIViewController를 서브 클래싱 한 커스텀 코드에서, 관리할 필요가 있는 데이터들이 있으면 변수를 추가합니다. 이러한 관계는 아래 그림과 같은 모양이 예가 될 수 있습니다. 이 그림에서 VC는 관리할 데이터들의 참조를 가지고 있고, 동시에 데이터를 화면에 뿌려주는 역할을 하는 View들의 참조 또한 가지고 있습니다. 이것들을 잘 다루는 것은 개발자의 몫입니다. 개발 시에는 데이터 객체와 VC 사이에 명확한 책임 분리를 해야 합..
-
The Role of View Controllers (1) - Overview - View Controller Programming Guide for iOSiOS/🍎 Documentation 2021. 1. 14. 00:41
출처: Appple Develover Documentation [ View Controller Programming Guide for iOS ] View controllers는 앱 내부구조의 기본 요소입니다. 대부분의 앱은 여러 개의 View controller를 가지고 있습니다. 각각의 View controller는 앱 내 존재하는 UI 일정 부분씩을 담당하고 interactions ( 이벤트 처리 ) 들을 담당합니다. 또한 다른 UI로의 transition을 용이하게 합니다. 즉, View controller는 앱에서 아주 중요한 역할을 맡습니다. UIKit이 제공하는 UIViewController 클래스는 View들을 관리하고 , 이벤트를 처리하고, 다른 View controller로 이동하고 (t..
-
마크다운 문법 간단 정리General/🟢 General 2021. 1. 5. 20:23
Header # 제목 1 ## 제목 2 ### 제목 3 #### 제목 4 Emphasis *이탤릭* _이탤릭_ **두껍게** __두껍게__ **_두꺼운이탤릭_** (복합 가능) ~~취소취소~ (strikethrough) 밑줄 List ordered list 와 unorderd list 1. 순서 리스트 2. 순서 리스트 - 서브 리스트 - 서브 리스트 -unorderd list * unordered list + unordered list Link [Google](https://google.com) [Naver](https://naver.com, " 링크 설명 추가 법 ") 참조 링크 그대로 사용 (2가지 방법) 1. http://google.com 2. Image ![피카츄](mblogthumb-phin..
-
Closure Capture List - MemoryiOS/🟠 Swift 2021. 1. 5. 13:49
언제 이 이슈를 유념해야 할까 클로저를 인스턴스 속성에 저장할 때입니다. 발생하는 상황 클로저의 강한 참조 순환은 다음 상황에 발생합니다. 1. 클로저가 인스턴스의 프로퍼티일 때 2. 클로저의 값 획득 상황 클로저 내부에서 self.(propertyName)이나, self.(methodName)처럼 인스턴스의 속성이나 메서드를 호출할 때, 클로저는 self를 획득하므로 강한 참조 순환이 발생합니다. 문제는 클로저가 획득한 인스턴스의 참조 카운트를 증가시켜 메모리 해제를 방지한다는 것입니다. 즉, 강한 참조를 유지하게 됩니다. 단, 클로저 내부에서 self 속성을 여러 번 호출하여 접근한다고 해도 참조 횟수는 한 번만 증가한다고 합니다. 앞선 글에서는 참조 타입의 인스턴스와 참조 타입 인스턴스 때문에 강한..
-
Memberwise Initializer - InitializeriOS/🟠 Swift 2021. 1. 5. 13:30
" 구조체에만 특별히 제공되는 이니셜라이저 " Struct 에만 특별히 제공되는 Initializer가 있습니다. 이 Initializer는 초기화 시점에서 수정 가능한 속성에 한하여, Argument로 제공합니다. 선언 시점과 초기화 시점을 구분해서 생각해보면, 위 문장을 쉽게 이해할 수 있습니다. 가능한 모든 Member를 초기화할 수 있게 해 주기 때문에 앞에 Memberwise Initializer로 명명된 것 같습니다. Parameter 목록에 추가되지 않을 경우는, let 으로 기본 값이 선언된 저장속성일 경우입니다. let으로 지정하면 값이 한번 선언된 이후 수정할 수 없기 때문입니다. 추가적으로 let이지만 기본 값은 선언되지 않았다면, 초기화 시점에서 처음 값이 들어가는 것이므로 Para..