![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/EnQLC/btsd1iAeDlC/vwp4FvraHVAaT3amFKd2v0/img.png)
앱에서 로그인 후, 서버에서 반환되는 사용자 인증토큰(accessToken과 refreshToken)을 저장하려고 합니다.CoreData를 사용하기에는 너무 단순한 형태이고,UserDefaults에는 간단한 설정값을 저장하는데 주로 사용하기 때문에,인증토큰처럼 보안이 중요한 경우에는 다른 방법을 찾아보는게 좋다는 생각이 들었습니다. KeyChain은 암호화된 저장소로 토큰 데이터를 저장하기에 알맞다고 판단한 후 앱에서 사용해보았습니다. UserDefaults가 키-값 쌍으로 데이터를 저장하고 불러오는 것처럼, 키체인도 사용할 수 있습니다.다만 KeyChain은 데이터와 속성을 묶고 추가적인 보안 속성을 함께 사용할 수 있습니다. 키체인 서비스 KeyChain Service사용자를 대신해서 안전하게 작은 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b6K1iM/btsd1izTEsD/J0GfyJkWOeNst503ro8X30/img.png)
애플 로그인(Apple Authentication Services)를 적용시킨 후 반환되는 값에 대해서 살펴보고자 합니다.유저가 첫 로그인에 성공하면, 가입 후 애플 서버로부터 받은 유저 정보를 서비스하는 서버에 전달해야 합니다.서비스에서도 일부 정보를 사용하고 저장해야하기 때문입니다.(애플 서버가입 여부는 아이폰 기준, 설정 - Apple ID - 암호 및 보안 - Apple로 로그인 - Apple ID를 사용하는 앱에서 확인 가능) 서버 쪽에서는 이 전달받은 데이터를 다시 검증하는 것으로 알고 있습니다.authorization.credential as? ASAuthorizationAppleIDCredential첫 로그인 시 확인할 수 있는 값 중 identityToken과 authorizationCo..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/A4uCN/btsd0nIp4uV/BKgjXQIOrqrMlzndBA9by1/img.png)
https://modelinspring.tistory.com/92 [Swift/iOS] CoreData 사용하기(3) - 데이터 저장하기, 데이터 불러오기 기초https://modelinspring.tistory.com/91 [Swift/iOS] CoreData 사용하기(2) - CoreData Stack 설정하기 From 공식문서! 공식문서를 참고한 글입니다.https://developer.apple.com/documentation/coredata/setting_up_a_core_data_stack https://modemodelinspring.tistory.com위 포스트에 이은 CoreData 네 번째, 마지막 포스트입니다. 이전 포스팅에서는 Object에 값을 채운 후 데이터를 저장했습니다. 모든..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/brdBNU/btsd5ZM4NtY/1RZoJ313k9zpRyPRody8a0/img.png)
https://modelinspring.tistory.com/91 [Swift/iOS] CoreData 사용하기(2) - CoreData Stack 설정하기 From 공식문서! 공식문서를 참고한 글입니다.https://developer.apple.com/documentation/coredata/setting_up_a_core_data_stack https://modelinspring.tistory.com/90 [Swift/iOS] CoreData 사용하기(1) - 프로젝트 중간에 추가하기, Entity 만들기Coremodelinspring.tistory.com위 포스트에 이은 CoreData 세 번째 포스트입니다. Core Data 데이터 저장하기이전 포스트에서 Car Entity를 만들어놓았습니다.이제..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bk2rir/btsd4GmBAou/whu6ophGi0UpG3wzsRiJf0/img.png)
! 공식문서를 참고한 글입니다.https://developer.apple.com/documentation/coredata/setting_up_a_core_data_stack https://modelinspring.tistory.com/90 [Swift/iOS] CoreData 사용하기(1) - 프로젝트 중간에 추가하기, Entity 만들기CoreData를 사용하기 위해서는 프로젝트 생성시에 Use Core Data를 체크하면 되지만,프로젝트 중간에 CoreData를 추가하게 되었습니다.이 과정을 살펴보겠습니다. 프로젝트 중간에 CoreData 추가하기Data Mmodelinspring.tistory.com위 포스트에 이은 CoreData 두 번째 포스트입니다.Core Data StackCore Data ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/k0xEA/btsdZH06COT/x7aGpnEZ7krkuApv5QEI1k/img.png)
CoreData를 사용하기 위해서는 프로젝트 생성시에 Use Core Data를 체크하면 되지만,프로젝트 중간에 CoreData를 추가하게 되었습니다.이 과정을 살펴보겠습니다. 프로젝트 중간에 CoreData 추가하기Data Model 파일 생성하기[command + N] 또는 [File] - [New] - [File...] 으로 Core Data의 Data Model 파일을 생성합니다. .xcdatamodeld 확장자의 파일이 생긴 것을 확인할 수 있습니다. AppDelegate 수정하기그 다음으로 AppDelegate를 수정합니다.CoreData를 import해주고,import CoreData // MARK: UISceneSession Lifecycle메서드들 다음에 아래 코드들을 추가합니다..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bcom59/btsdZqE6EfE/1FcRxszUQjHMsoJGQgx5M0/img.png)
[Swift/iOS] 메모리 안전성 Memory Safety From 공식문서(1)[Swift/iOS] 메모리 안전성 Memory Safety From 공식문서(2)! 공식문서를 참고한 글입니다. 메서드에서 Self로의 접근 충돌 Conflicting Access to Self in Methods구조체의 mutating 메서드는 메서드 호출의 지속시간 동안 자기 자신(Self)을 향한 쓰기 접근을 갖습니다.struct Player { var name: String var health: Int var energy: Int static let maxHealth = 10 mutating func restoreHealth() { health = Player.maxHealt..
퍼사드 패턴이란?서브 시스템을 감싸고 단순한 인터페이스를 제공, 복잡한 시스템 구조를 단순화하는 패턴건물의 정면(Facade)을 의미다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체간편한 메소드 제공간단히 말하면특정 행동을 위해 필요한 여러 서브 클래스들의 기능을 '퍼사드라는 클래스로 단순화해서 쉽게 사용할 수 있게 한 것'입니다.서브 클래스들의 많은 기능을 다 가져오는 것이 아니라 퍼사드 클래스의 목적 수행을 위해 필요한 기능들만 가져와서 단순화합니다. 퍼사드 패턴의 구성요소퍼사드 클래스서브 시스템들을 단순화하는 역할을 함클라이언트는 서브시스템들과 직접 소통하는 것이 아니라 퍼사드 클래스만 사용함 -> 클라이언트는 서브시스템의 내부 구조를 알 필요가 없음서브시스템 클래스퍼사드 클래스에 ..
Delegate 패턴객체 지향 프로그래밍에서 많이 사용되는 디자인 패턴 중 하나입니다.객체 간의 상호작용을 할 때 사용하곤 합니다. 작업을 위임하는 객체와 대리하는 객체(실제로 작업을 수행하는)로 구성됩니다.대리자 객체는 위임자 객체에서 호출이 가능한 메서드를 구현합니다.이를 호출하는 위임자 객체는 대리자 객체의 메소드를 대신 호출합니다. 객체간 결합도를 낮출 수 있고, 유연하고, 확장 가능한 코드를 작성할 수 있게 됩니다.Swift에서 Delegate 패턴을 사용하는 방법1. 프로토콜 정의하기protocol SomeDelegate: AnyObject { func someMethod()}2. 위임자 객체 생성하기 class SomeClass { var delegate: SomeDelegate? ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/M9tmR/btsc0XXFmah/T6YK4px6AMwZk6dCezmMTK/img.png)
[Swift/iOS] 메모리 안전성 Memory Safety From 공식문서(1)[Swift/iOS] 메모리 안전성 Memory Safety From 공식문서(2)! 공식문서를 참고한 글입니다. 메모리에 접근할 때, 충돌을 피하는 코드를 구조화 하는 법기본적으로 스위프트는 코드에서 일어나는 UnSafe한 행동을 방지합니다.예를 들어,스위프트는 변수를 사용 전에 초기화시키는 것, 메모리는 해제 된 뒤에 접근할 수 없는 것, 배열 인덱스가 범위를 벗어났는지 체크하는 것등을 보장합니다. 대부분의 경우에는 스위프트가 메모리를 자동으로 관리하기 때문에 이를 생각할 필요는 없지만,충돌이 발생할 수 있는 경우를 알고, 그것을 예방하는 코드를 작성할 줄 알아야 합니다.충돌이 일어난 경우에는 컴파일 오류나 런타임 오류..
- Total
- Today
- Yesterday
- 강한참조순환
- Entity
- Core Data Stack
- unowned
- autoclosure
- Persistent Container
- weak
- 클로저
- context
- CoreData
- 캡쳐리스트
- Delegate 패턴
- 강한 참조 순환
- authorizationCode
- 회원가입
- core data
- 클로저 강한 참조
- ASAuthorizationAppleIDCredential
- 클로저표현
- identity Token
- 메모리 안정성
- inout 파라미터 메모리 충돌
- object
- escaping closrue
- 자동클로저
- 클로저 축약
- 디자인패턴
- 토큰저장
- ios
- SWIFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |