-
[Swift] self 는 어느 시점부터 사용할 수 있을까?iOS/🟠 Swift 2021. 1. 1. 23:45
1차 수정: 2021/06/10 안녕하세요. 오늘은 self 의 접근 가능 시점에 대해서 적어보려고 합니다🐶 사실 이 궁금증은 제가 스위프트를 처음 시작할 무렵 가지게된 것인데, 결론부터 말씀드리자면 이 궁금증은 클래스의 Initialization Process 를 이해하면 완벽하게 해결됩니다😂 저의 경험으로는 이 주제(Initialization Process)를 아주 꼼꼼하게 여러번 읽은 후 비로소 이해가 되었던 것 같습니다. 그럼에도 불구하고 이 글을 적은 이유는 막힌 부분을 해결하기 위해 Initialization 전체를 다시 공부해야할 시간이 없어서, ad-hoc 으로 우선 알고 넘어가려고 하시는 분들을 위해서입니다. :: ad-hoc 이 무조건 나쁜 것이라고 생각하지는 않습니다 이 글에서는 In..
-
Strong Reference - MemoryiOS/🟠 Swift 2020. 12. 31. 12:04
"강한 참조" 참조 타입의 인스턴스를 별도의 키워드 없이 저장할 때, 기본적으로 강한 참조가 생깁니다. Swift의 참조 타입 : Class, Closure 강한 참조를 통해 저장된 인스턴스는 변수 혹은 상수가 1. 소유하고, 2. 참조합니다. ARC의 메모리 해제 판단 기준 ARC는 소유( retain )를 기준으로 Reference Counting을 합니다. 예를 들어, 소유가 1 이라면 메모리 해제를 하지 않고, 소유가 0이 될 때 메모리 해제를 합니다. 그렇다면 소유가 0 이고 참조가 1인 상황이 있을까요? 후술 할 weak와 unowned를 통해 구현할 수 있습니다. Reference Count 를 감소시키는 방법은, 참조하던 변수에 nil을 할당하는 것입니다. 따라서 해제시키려면 Optiona..
-
ARC - MemoryiOS/🟠 Swift 2020. 12. 30. 23:49
"Auto Reference Counting" 배경 더 이상 사용되지 않는 인스턴스가 메모리에 남아있다면 메모리 누수가 발생합니다. 메모리 누수는 앱 성능의 저하로 이어지기 때문에 인스턴스의 적절한 해제는 중요한 이슈입니다. stack 에 저장된 인스턴스 ( 값 타입 ) 는 해당 블록이 종료되면 자동으로 해제되지만, heap 에 실제 데이터가 저장된 참조 타입은 메모리 해제를 직접 해주어야 합니다. MRC 와 ARC Apple 의 개발환경 Cocoa 에서는 메모리 관리 모델이 두 가지가 존재합니다. MRC ( Manual Reference Counting) 과 ARC (Auto Reference Counting) 입니다. Objective - C 에서는 MRC 와 ARC를 모두 지원합니다. 하지만 MRC..
-
M1 MacBook git 설치법 (without Homebrew)iOS/🛠 이슈와 궁금증 2020. 12. 29. 18:49
💠🟢[우짱의 iOS 블로그]🔵💻 iOS를 공부하면서 배운 내용을 기록하고 있습니다. 목적 Apple git 이 아닌 Original git 설치 배경 최근에 M1 맥북으로 기변을 하였는데, Homebrew를 rosetta2 에뮬로 돌려야 해서 그런지 git 이 정상적으로 설치되지 않았습니다. XCode 를 설치했다면 Apple git이라고 하는 git이 같이 설치되지만, original git을 설치하고 싶었습니다. 다만 git 공식 홈페이지에서는 Xcode 설치를 통한 git 다운로드도 하나의 방법으로 제시하고 있습니다. 해결법 소스트리를 설치해서 git을 적용합니다. 결과 끝!
-
[Swift] 값타입과 참조타입 ( Value Type vs Reference Type )iOS/🟠 Swift 2020. 12. 29. 18:30
1차 수정: 2021.06.06 안녕하세요. 이번 글에서는 스위프트의 값타입과 참조타입의 차이점을 메모리에 저장되는 관점에서 다루어보겠습니다🐶 *속성감시자에서 값타입과 참조타입의 작동차이가 궁금하다면? -> 속성감시자란 (Property Observer) ? Swift에서 자료구조들은 다음과 같은 타입을 가집니다. 값 타입 참조 타입 Structure Enumeration Tuple Class Closure /* Value Type */ struct testStruct { var name = "" var age = 0 } /* Reference Type */ class testClass { var name = "" var age = 0 } 대표적인 타입인 Struct와 Class를 통해 비교해 보겠습니다..
-
Optional PropertyiOS/🛠 이슈와 궁금증 2020. 12. 2. 02:57
" 옵셔널 속성은 기본 값을 설정하지 않을 시 nil 로 초기화 된다 " import UIKit class Test: UIViewContorller { var updateTimer: Timer? @IBOutlet weak var updateButton: UIButton! //Implicitly Unwrapped Optional ... } Test 클래스의 멤버에 default 값이 없음에도 컴파일 에러가 발생하지 않고 initializer 가 자동 생성되는 이유는, 옵셔널 값의 경우 자동으로 nil 이 기본 값으로 초기화되기 때문이다. IUO 도 마찬가지이다. 끝.