전체 글

전체 글

    [Swift] 타입 캐스팅이란 ? (is, as)

    오늘은 타입 캐스팅이 무엇인가에 대해서 포스팅해보려고 한다. 항상 무의식적으로 타입 캐스팅을 쓰고 있는데, 뭔가 주입식으로 써야 한다!라고 어디선가 본 이유로 쓰는 것이지, 왜 쓰는 것인지 본질적으로 알고 있는 것은 아니라 판단하여 공식문서 및 다양한 블로그를 참고하여 글을 작성하려고 한다. 타입 캐스팅의 종류에는 is, as가 있다. 인스턴스의 타입을 확인하거나, 해당 인스턴스를 superclass / subclass로 취급하는 방법이다. Checking Type 공식문서 - is 연산자를 이용하면 특정 인스턴스의 타입을 확인할 수 있다. 내용이 빈약하기 때문에, 더 찾아보았다. - 표현식이 Type과 동일하거나, 표현식이 Type의 서브 클래스인 경우 --> True 반환 - 이외에는 false를 반..

    [iOS] swift Alamofire 토큰 재발급 구현 방법(adapt, retry, RequestIntercepter)

    본인은 개발을 시작한지 얼마 되지 않은 대학생이지만, 최근에 토큰 재발급하는 로직 관련해서 어려움을 크게 겪어 누군가 도움이 되었으면 하는 마음에 글을 포스팅해본다 😁 Alamofire에서는 자체적으로 RequestIntercepter라는 프로토콜을 제공하고, 그 안에는 adapt, retry 메소드가 정의 되어있다. 따라서 우리는 이 두개의 메소드를 잘 활용한 후, api 호출할 때 인터셉트로 넣어주면 토큰을 쉽게 재발급할 수 있다. 작동 순서 request() -> adapt() -> 토큰 만료 -> retry() 에서 RefreshToken을 넣은 후 다시 reqeust() -> adapt() -> 서버에서 확인 후 토큰 갱신 -> retry() // 로컬에 토큰 업데이트 -> request() -..

    [Swift] Swift 공식문서 정리 - 5(옵셔널 체이닝)

    옵셔널이란? 옵셔널이란 nil을 사용할 수 있는 Type을 옵셔널 타입이라고 부르며, nil을 가질 수 있는 값은 옵셔널 타입이다. 옵셔널 체이닝(Optional Chaining) class Person { var residence: Residence? } if let roomCount = john.residence?.numberOfRooms { print("John's residence has \(roomCount) room(s).") } else { print("Unable to retrieve the number of rooms.") } // Prints "Unable to retrieve the number of rooms." 강제 언래핑(Forced Wrapping) var name: Strin..

    [Swift] Swift 공식문서 정리 - 4(열거형)

    열거형이란 ? - 같은 주제로 연관된 데이터들을 멤버로 구성하여 나타내는 자료형 열거형의 선언 enum CompassPoint { case north case south case east case west } var directionToHead = CompassPoint.west // 이후엔 생략 가능 directionToHead = .east Switch 구문에서 열거형의 사용 directionToHead = .south switch directionToHead { case .north: print("Lots of planets have a north") case .south: print("Watch out for penguins") case .east: print("Where the sun rises..

    [Swift] Swift 공식문서 정리 - 3(클래스 & 구조체)

    클래스와 구조체의 공통점 - 값을 정의하기 위한 프로퍼티 정의 - 기능을 정의하기 위한 메소드 정의 - subscript 정의 - 이니셜라이저 정의 - 기본 구현에서 기능 확장 - 프로토콜 제공 클래스만 가능한 기능 - 상속 : 클래스의 여러 속성을 다른 클래스에 물려 줌 - 타입 캐스팅 : 런타임에 클래스 인스턴스의 타입을 확인 - 소멸자 : 할당된 자원을 해제 시킴 - 참조 카운트 : 클래스 인스턴스에 하나 이상의 참조가 가능 선언 문법 class SomeClass { // 클래스 내용은 여기에 } struct SomeStructure { // 구조체 내용은 여기에 } 예시 struct Resolution { var width = 0 var height = 0 } class VideoMode { va..

    [Swift] Swift 공식문서 정리 - 2(제어문, 함수)

    제어문 For-In Loops 순서대로 순회하기 위해 사용 for index in 1...5 { print("\(index) times 5 is \(index * 5)") } // 1 times 5 is 5 // 2 times 5 is 10 // 3 times 5 is 15 // 4 times 5 is 20 // 5 times 5 is 25 While 조건이 거짓일 때 까지 반복 var square = 0 var diceRoll = 0 while square < finalSquare { // roll the dice diceRoll += 1 if diceRoll == 7 { diceRoll = 1 } // move by the rolled amount square += diceRoll if square ..

    [Swift] Swift 공식문서 정리 - 1(기본연산자, 문자열, 콜렉션 타입)

    [Swift] Swift 공식문서 정리 - 1(기본연산자, 문자열, 콜렉션 타입)

    연산자 nil 병합 연산자 - 형태 : a ?? b - 의미 : a가 nil(값이 없다)일 경우, b를 반환한다는 의미. let userColor = "green" var nilColor: String? var colerNilCheck = nilColor ?? userColor // nilColor가 nil 값, 즉 userColor가 들어간다. 문자열과 문자 문자열 리터럴 - 형태 : let something = "something" 여러줄 문자열 리터럴 let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," ..

    [iOS] Key-Chain이란?

    [iOS] Key-Chain이란?

    프로젝트를 진행하며 accessToken을 안전하게 처리하는 방법에 대해서 찾아보던 도중, userDefaults로는 안전하게 처리할 수 없겠다고 판단했고, 실제로도 그랬다. 따라서 Key-Chain을 사용해야하는 상황인데, 블로그에 정리하며 알아보겠다. 키체인이란 ? - 애플이 제공하는 사용자를 대신하여 소규모 데이터들을 안전하게 저장해주는 저장소 위와 같은 과정들은, 애플에서 처리해주기 때문에 우리는 어떻게 사용할 수 있는지 알아보면 된다. 키체인의 특징 - 애플리케이션은 자기 자신의 키체인에만 접근할 수 있다. - 앱을 삭제해도 키체인에 저장된 정보는 삭제되지 않는다. - 키체인 그룹을 사용하여 서로 다른 앱에서도 저장된 데이터를 공유할 수 있다. - 비밀번호, 개인키 등 보호가 필요한 정보는 암호..

    수타_개인정보처리방침

    ○ 이 개인정보처리방침은 2022년 1월 1부터 적용됩니다. 1. ('https://sozohoy.tistory.com/'이하 '수타')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 2. ① 은(는) 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집 시에 동의받은 개인정보 보유·이용기간 내에서 개인정보를 처리·보유합니다. ② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다. 1. 와 관련한 개인정보는 수집.이용에 관한 동의일로부터까지 위 이용목..

    [iOS] AppDelegate란 ?

    [iOS] AppDelegate란 ?

    오늘은 AppDelegate에 대해서 정리해보겠다. iOS 13 버전 이후에 SceneDelegate가 추가되어서 AppDelegate의 일부 역할은 SceneDelegate가 하게 되었고, AppDelegate는 Session Lifecycle에 대한 역할이 추가되었다. 또한 window -> scene으로 대체되었다. (Scene : Scene에는 UI의 하나의 인스턴스를 나타내는 windows와 view controllers가 들어있다. 또한 각 scene에 해당하는 UIWindowSceneDelegate 객체를 가지고 있고, 이 객체는 UIKit와 앱 간의 상호작용을 조정하는 데 사용한다. Scene들은 가튼 메모리와 앱프로세스 공간을 공유하면서 서로 동시에 실행된다. 결과적으로 하나의 앱은 여러..