-
마크다운 문법 간단 정리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..
-
Initializers - InitializeriOS/🟠 Swift 2021. 1. 5. 13:00
"이니셜라이저" 개요 Enumeration, Class, Struct 는 모두 개발자가 선언해 놓은 설계도 입니다. 우리는 이 설계도와 Initializer 를 통해 Instance 를 만들 수 있습니다. Initializer의 실행 후, 모든 속성은 기본 값을 가지고 있는 상태여야 합니다. 만약 기본 값이 없는 속성이 존재한다면 Initialization 즉, 초기화는 실패합니다. Initializer의 종류는 여러가지가 있습니다. Default Initializer, Memberwise Initializer, Designated Initializer, Convenience Initializer , Required Initializer 이어지는 글에서 차례로 각각 다뤄보려고 합니다. Basic Synt..
-
Strong Reference Cycle - MemoryiOS/🟠 Swift 2021. 1. 3. 22:26
"강한 참조 순환" ARC의 작동 및 강한 참조의 규칙을 잘 모르고 사용할 때 발생하는 이슈입니다. ARC와 관련되었으므로 참조 타입 사이에서 발생합니다. (class, closure) 발생 예시 개발자가 인스턴스에 nil을 할당하는 경우는 언제일까요? 인스턴스가 더 이상 참조할 필요가 없어서 메모리에서 해제시키고 싶을 경우일 것입니다. 의도는 인스턴스의 메모리 해제였지만, 인스턴스가 해제되지 않고 메모리에 남아있음과 동시에 접근도 할 수 없는 경우가 생깁니다. 바로 강한 참조 순환이 발생한 경우입니다. 타입 인스턴스와 인스턴스 사이(이번 글), 인스턴스와 그 인스턴스의 속성에 저장된 클로저 사이 코드 인스턴스가 서로 강한 참조 하는 경우, 인스턴스에 nil을 넣어도 인스턴스의 속성이 다른 인스턴스를 캡..
-
Weak Reference - MemoryiOS/🟠 Swift 2021. 1. 2. 20:48
" 약한 참조 " 강한 참조 순환을 해결하기 위한 방법 중 하나 입니다. 참조 타입의 변수의 선언 앞에 'weak' 키워드를 써주어서 구현합니다. 강한 참조와 달리 약한 참조는 인스턴스를 소유 ( retain ) 하지 않고 참조 ( refer ) 만 합니다. 따라서 ARC 모델의 reference counting을 증가시키지 않습니다. 또한 도중에 reference counting이 0 이 되어 참조하고 있던 인스턴스가 메모리 해제될 수 있는데, 이 때는 nil로 초기화 됩니다. 기존의 값이 변경되어야 하기 ( instance 주소 - > nil ) 때문에 변수 ( var ) 여야 하고, nil을 담을 수 있어야 하기 때문에 옵셔널이여야 합니다. 종합적으로, weak 키워드는 옵셔널 참조 타입의 변수 앞..