1. Retain Cycle Retain Cycle이란 메모리가 해제되지 않고 유지되어 메모리 누수가 발생하는 현상을 말합니다. 클래스간 참조는 default로 강한(strong) 참조이기 때문에 각각의 클래스에서 참조가 발생한다면 강한 참조로 인해 메모리에서 해제되어야 할 상황에도 해제되지 않는 현상이 발생합니다. 이는 곧 메모리 누수(Memory Leak)로 이어집니다 2. Delegate 2-1. delegate를 weak var로 선언해야하는 이유 Retain Cycle이 발생하기 때문입니다. 이러한 상황을 방지하고자 하는 것이 delegate 참조 수준을 weak로 낮추는 방법입니다. 2-2. weak var 적용 적용 전 코드 import UIKit protocol CustomDelegate ..
오늘은 UIViewController의 Life-Cycle에 대해 알아보겠습니다 화면의 생애 정도로 봐도 될 것 같네요. 1. init 1-1. init(coder:) 스토리보드를 통해 ViewController 초기화 작업을 하는 메소드입니다. 1-2. init(nibName:bundle:) nib를 통해 init(corder:)를 대신하여 초기화 작업을 하는 메소드입니다. 2. loadView 뷰를 실제로 생성해서 메모리에 로드합니다. 스토리보드나 nib(xib)을 사용하지 않는다면 이 메소드를 오버라이드해서 뷰를 만들고 뷰계층을 구성해야 합니다. 3. viewDidLoad 뷰가 메모리에 로드된 이후 시점에 한 번만 호출됩니다. 뷰가 로드는 되었으나 화면에 뷰가 나타나진 않았으므로 빈 화면에서 발생합..
오늘은 iOS 앱 개발을 한다면 꼭 알아야 할 Delegate Pattern에 대해 정리해보겠습니다. 1. Delegate란 무엇인가? Delegate의 사전적 의미를 보면 대리자, 위임자 정도로 해석이 가능합니다 '뭘 위임한다는 거지...?' 라는 의문이 들 텐데, Swift에서는 Delegate 패턴을 통해 특정 기능을 위임하는 것이 가능합니다 한 객체에서 모든 프로세스를 처리하기엔 가독성, 코드 재사용성 측면에서 많은 손해를 보기 때문입니다 2. 사용법 이제는 델리게이트가 뭔지도 알겠고 왜 쓰는지도 알겠는데 어떻게 쓰는 걸까? delegate를 제대로 사용하기 위해서는 아래 내용들을 이해하고 있어야 합니다 프로토콜 (Protocol) : 대리자가 수신자에게 전달할 내용의 약속(규칙)입니다 수신자 (..
1. pod install pod 'GoogleSignIn' Podfile에 GoogleSignIn 디펜던시를 추가 후 pod install을 진행합니다. 2. ClientID 생성 구글 클라우드 플랫폼에서 프로젝트 생성 후 API 및 서비스 - 사용자 인증 정보 탭으로 이동합니다 사용자 인증 정보 만들기 > OAuth 클라이언트 ID로 이동합니다 OAtuh 동의 화면 설정이 안 되어있다면 순차적으로 진행하시면 됩니다 iOS 항목을 선택하여 생성합니다 클라이언트 ID가 생성되었다면 사전 설정은 완료입니다 3. 프로젝트 설정 프로젝트 설정 > URL Types에 발급받은 ClientID를 역순으로 적어줍니다 func application(_ application: UIApplication, open url..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.