본문 바로가기

iOS

(56)
[iOS] OAuth2.0 access token을 받아보자 목표 42의 Auth에 접근하여 Auth token을 얻고 얻은 Auth token으로 42 api에 access token을 요청해서 acess token을 받아보자! 그러면 acess token으로 이제 42api에서 자료를 받을 수 있다.! OAuth의 Grant Type 종류 - Authorization Code Grant Type - Implict Grant Type - Resource Owner Password Credentials Grant Type - Client Credentials Grant Type 여기서 저는 예전에 "마주친42"앱에서 Client Credentials Grant Type을 사용했습니다. 그 당시 42에서 받은 client id, client secret만으로 acc..
[iOS] OAuth2.0을 써보고 싶다. URLSchemes 서론 아 OAuth2.0으로 42intra 로그인을 하고 싶은데. 웹뷰를 써야하는건가 외부 사파리 앱을 써야하는 건가 어떻게 redirect uri를 앱으로 돌리지 하다가.. 하나씩 하나씩 하자고 마음 먹었습니다. URLSchemes 부터 가겠습니다. 부딪히면서 실습!! 실습!! URLSchemes Target의 Info에 들어가면 저 밑에 URL Types가 있습니다. Click Click! URL Types에 들어오시면 URL Schemes를 설정할 수 있습니다.!! 이게 있으면 URL로 앱에 접근이 가능해욧!! Identifier에 앱의 번들id를 넣어주세요.. 안넣으면 안되더라고요! 이렇게 이렇게 사파리에 URL Schemes를 쓰면 !! 내가 만든 앱으로 돌아갈 수 있습니다.!! (일단 외부 사..
[Swift] Swift 버전에 대해.. (+Xcode) 프로젝트를 시작하면서 iOS개발엔 당연히 Swift쓰지라고 생각했었습니다. Swift도 버젼이 1, 2, 3, 4, 5 현재에 이르러서는 5.4 버젼입니다. Swift 5는 Xcode 10.2 버젼에서 정식으로 릴리즈 되었습니다. 프로젝트를 진행할 때 Swift 5를 써야하는 이유가 뭘까 4를 쓰면안될까 최신 버전은 안될까 ? 생각을 하다가. 공식 다큐먼트에 모든 정보가 있습니다.. ㅎ swift.org/blog/ Swift.org Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. swift.org 근본이 최고시다. de..
[iOS] SwiftLint 사용 프로젝트를 하기 앞서 모든 팀원들의 코딩 컨벤션 통일을 위해 SwiftLint 사용을 하기로 했습니다. SwiftLint은 코드를 작성할 때 추천하는 코딩 스타일, 괜찮은 사례등을 모아 놓은 가이드라인 및 규칙들 입니다. 모든 파일들이 Swift 코드가 일관성을 유지하도록하면 새로운 개발자가 합류하거나 예전 코드를 읽을 때 도움이 되며 모든 코드가 일관적으로 보이기 때문에 신경이 분산되지 않습니다. 또한 팀들간의 코드도 팀에 새로 합류한 팀원들도 일관적으로 코드를 짤 수 있습니다. SwiftLint를 실행 시켜 보자!! 1. pod init 2. Podfile에 pod 'SwiftLint' 추가!! -> pod install 3. Targets의 Build Phases에 Run Script를 추가하고 스..
[iOS] 키보드에 맞게 view 수정, NotificationCenter, UIResponder iOS 개발을 하다보면 텍스트 필드를 누르고 키보드창이 올라와서 텍스트 필드의 내용을 확인을 못할 때가 있습니다. 그래서 일단 예시로!! 극단적으로 텍스트 필드를 하단에 둬봤습니다.. 내 텍스트필드 어디갔어.... 생각.. 일단 생각하기로 - 일단 텍스트 뷰를 누르고 키보드가 올라올 때 뷰도 같이 올려줘야하고 - 키보드를 endEditing이나 resignFirstrespond메서드로 내렸을때도 내려줘야 합니다. 텍스트 필드를 눌렸을 때 키보드가 올라오는 기능은 iOS 자체 기능이기 때문에 방법이 있을거라 생각합니다. delegate 같은 걸 쓰나?!?! 어떻게 하냐!! NotificationCenter 사용!! 예약된 옵저버들에게 정보를 broadcast 가능하게 해주는 알림 발송 메카니즘이다. add..
[iOS] DispatchGroup, DispatchItem, DispatchSemaphore Dispatch Group의 목적!!!! 여러 스레드로 분배된 작업들이 끝나는 시점을 그룹지어서 한번에 파악하고 싶을 때 Dispatch Group의 사용됩니다. (예를 들어 셀의 모든 이미지가 다운로드 된 뒤에 특정 행동을 해야할 때) 사용방법 1. notify() 사용! 출력은?!?! . . . 2초 후 이렇게 두개의 task가 다 끝났을 때 notify()를 통해 알 수 있습니다.! let group = DispatchGroup()으로 만들 수 있음 2. group.wait() 사용 wait를 쓰면 2개가 다 끝날 때 까지 멈춰있기 때문에 잘못쓰면 데드락 발생합니다. 안쓰는게 나아보이는데??!?!?!?! 최대한 notifify를 쓰는게 나은 것 같습니다. (+wait에 시간 파리미터를 줘서 그 시간..
[iOS] Dispatch Queue 종류 Dispatch Queue 종류 main queue, global queue, custom queue 세 종류의 queue가 있습니다. ㅎ 1. main queue - main queue는 serial 합니다. - 오직 하나만 존재!! 우리가 쓰는 main thread에서 처리!! UI업데이트를 주로한다. - main queue로 보내면 무조건 메인 스레드로만 보내고 메인 스레드는 오직 한개 뿐 - main queue는 main thread로만 task를 보내기 때문에 무조건 serial입니다. (ㅋㅋ 당연한말) 2. global queue - global queue는 concurrent 합니다. - concurrent 특성을 가진 queue입니다. - QoS(Quality Of Service)를 가지며..
[iOS]동시성 프로그래밍, GCD, 동기, 비동기, 직렬성 동시성 프로그래밍 concurrency - 다수의 스레드에 적절히 일을 분배 시켜서 동장 하도록 하는 프로그래밍 주로 iOS에서는 메인 스레드로 UI를 그리는 작업을 하고 이미지를 다운로드 받아오는 등 큰 데이터를 쓰는 작업은 비동기로 다른 스레드에서 처리하게 됩니다. 이렇게 여러 스레드를 사용해서 iOS에서는 동시성 프로그래밍이 가능합니다. 다른 스레드로 task를 보내기전 선입선출을 하는 queue에 task를 저장합니다. 그리고 이 queue에서 여러개의 다른 스레드로 task를 보내어 처리를 해줍니다. 이렇게 queue에 있는 task들을 여러 스레드로 분산처리 해주는 것이 바로 GCD입니다. GCD (Grand Central Dispatch) queue에 넣은 작업을 GCD가 스레드를 적절히 생..