목록공부 노트(Swift) (28)
Weekoding
Swift 공부 중 Property Observer라는 재밌는 걸 알아냈다. 근데 애초에 Property 값에 대한 Oberver라는 의미이므로, Property에 대해 기본적으로 이해하고 있어야 해서 멀리 돌고 돌아 공부해 보기로 했다. Property - 사전적 의미: '속성' - 공식 문서를 살펴보면, Swift에서는 다음과 같은 의미를 갖는다. Properties associate values with a particular class, structure, or enumeration. → 특정 클래스, 구조체, 열거형과 연관된 값들을 프로퍼티라고 한다. 문서를 읽어보면, 추가로 세 가지에 대한 개념이 더 나와있다. 오늘 우리가 다루어볼 내용들이다. Stored properties store con..
Placeholder : 자리 표시자. 앱 개발 시 사용자에게 보다 편리한 UX를 제공하기 위해, Text를 입력할 수 있는 컴포넌트에는 PlaceHolder가 보통 기본 속성으로 포함되어있다. 아래와 같은 모양의 UI를 많이 보았을 것이다. 내용을 입력하세요.. 이렇게 TextField / TextView를 그냥 두기보다, Placeholder를 이용하여 사용자에게 해당 컴포넌트의 역할을 알려주는 것이다. 근데 Swift의 TextView에는 Placeholder가 없다..?🫠 공부를 하다가 교묘하게 Placeholder 모양새를 낼 수 있는 방법을 알아내어 포스팅 하게 되었다. 뚝딱뚝딱 Snapkit으로 UI를 간단하게 구성해보았다.(SnapKit 코딩은 이전 포스팅 참고) 위에 있는 컴포넌트가 Te..
App Transport Security(ATS) : 기존의 HTTP에서 보안이 향상된 버전인 HTTPS의 등장으로, 현재 대부분의 웹들이 HTTPS를 사용하고 있다. 장단점이 존재하는 것이 아니라 상대적으로 보안이 취약하기 떄문에, iOS 9 이후로는 App Transport Security(ATS)를 이용하여 HTTP를 통한 접속을 기본적으로 차단하고 있다. 따라서, 이에 대한 설정을 하지 않은 채 http로 request를 시도하면 다음과 같은 에러를 발견하게 된다. Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the u..
클로저를 사용할 때, [weak self]를 사용하게 된다. 그리고 때때로, 클로저 안에 guard let self = self로 self 캡처를 하는 경우를 보았을 것이다. {[weak self] in guard let self = self else {return} ... } 오늘은 이것들에 대해서 파헤쳐 보고자 한다. 🔍 시작하기 전에: capture: 클로저 내부에서 밖에 있는 scope의 instance를 참조하는 것 escaping: 클로저 외부에서 해당 클로저 자체를 참조하고 있는 것 1. [weak self] : 약한 참조(weak reference)를 의미한다. 써도 그만 안써도 그만일 것 같은 느낌이 드는데, 자세히 알아보자! 1) [weak self]를 쓰는 이유는? Swift는 ARC..
기기에 맞추어 constraint를 변경한다거나, 데이터를 불러와서 setting할 때, 화면 혹은 앱이 끝나서 데이터를 처리하거나 background에서 처리할 것이 있을 때(금융 앱들은 정보보호 차원으로 화면이 가려지는 등) 생명주기를 잘 알고 대응해야 적절한 타이밍에 작업을 할 수 있다. App과 ViewController의 LifeCycle에 대해 정리해 보자. 🔄 App LifeCycle 우선, App LifeCycle과 관련된 동작들은 SceneDelegate와 AppDelegate에서 이루어진다. Xcode Project를 생성하면 기본적으로 생성이 되어있는 파일들이다. Before start : iOS 12 이하 - AppDelegate가 모든 역할을 담당했다. iOS 13 이상 - Sce..
ViewController간 데이터를 주고받는 방법은 6가지가 있다. 1. 직접 프로퍼티에 접근 2. 함수를 통한 접근 3. Segue 4. Delegate 5. Closure 6. NotificationCenter 그 중 1, 4번을 간단한 예제를 통해 정리해보려고 한다. ( 나머지는 추후에..! ㅎㅎ ) 먼저 잠깐 알아보자면 1~3번의 방법들은 남발하게 되면 좋지 않은데, 이 방법들은 다른 ViewController에 직접적으로 의존하게 되므로 강한 결합이 되어있는 형태가 된다. 이는 객체 간 모듈화에도 좋지 않으며 스파게티 코드가 될 위험이 있다고 한다. 4~6번의 방법은 이러한 강한 결합 형태의 문제점을 벗어나 서로 의존하지 않는 구조로 전달할 수 있다. 이번 예제에서는 FirstViewContr..