일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Dev-Matching
- api 비동기처리
- invalid_grant
- 스프링부트
- NestJS
- oauth
- 검색
- concurrency limit
- 자바스크립트
- AWS
- 우아한 테크코스
- 파일 url
- TypeORM
- 프론트엔드 과제
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- bucket4j
- 프리코스
- this
- Deep Dive
- 프론트엔드
- 프로그래머스
- 타입스크립트
- compateto
- 유효시간 설정 url
- redis
- 모던 자바스크립트
- 우아한테크코스
- 음악 url 파일 다운로드
- 딥다이브
- api 요청 수 제한
- Today
- Total
목록모바일/Swift (8)
개발 알다가도 모르겠네요
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let storyboard = UIStoryboard.init(name : "Main", bundle: nil) let newsDetail = storyboard.instantiateViewController(identifier: "NewsDetailController") as! NewsDetailController if let news = newsData { let row = news[indexPath.row] if let v = row as? Dictionary { if let imageUrl = v["urlToImage"] as? String { newsDe..
swift에서 data는 dictionary 타입입니다. (key, value) func getNews() { let url = "https://newsapi.org/v2/top-headlines?country=kr&apiKey=248805a55af84f14b13e8e69456fb6dd" let task = URLSession.shared.dataTask(with: URL(string: url)!) { (data, response, error) in if let dataJson = data { do { let json = try JSONSerialization.jsonObject(with: dataJson, options: []) as! Dictionary //swift에서 data는 dictionary..
Create a url Create a URLSession Give the session a task Start the task URLSession은 기본적으로 다음과 같은 순서(Life Cycle)로 진행됩니다. Session configuration을 결정하고, Session을 생성. 통신할 URL과 Request 객체를 설정. 사용할 Task를 결정하고, 그에 맞는 Completion Handler나 Delegate 메서드들을 작성. 해당 Task를 실행. Task 완료 후 Completion Handler가 실행. Completion handler 어떠한 일이 끝났을 때 진행할 업무를 담당. 1. Session URLSession은 크게 3가지 종류의 Session을 지원합니다. Default S..
모바일에서 네트워크 통신 시 그 과정은 백그라운드에서 동작(스레드 = 일꾼에 의해) 합니다. Background : Network Main : UI 즉 ui에 보이도록 하라면 백그라운드의 데이터를 메인으로 올라오게 해야 합니다. 이때 dispatchqueue를 사용합니다. GCD (Grand Central Dispatch) 멀티코어 환경을 제공하는 ios에서 멀티스레드를 활용한 동시성 프로그래밍을 개발자가 DispatchQueue를 이용해 쉽게 구현할 수 있도록 하는 기술. Serial : Queue 대기열 내에 있는 작업 항목들을 순차적으로 처리 Concurrent : Queue 대기열 내에 있는 작업 항목들을 병렬로 동시에 처리 Sync : Queue의 작업을 수행시키고 수행 완료될 때 까지 기다림...
클로저 실행 가능한 코드 블록 파라미터로서 넘겨질 수 있음. 이름이 없는 함수 옵셔널 옵셔널의 개념 어떤 변수에 value가 있을 수도 있고 없을 수도 있음. 있다면 value값을 넣고 없다면 nil을 넣음. Forced unwrapping : 억지로 박스를 까 보기 Optional binding (If let) : 부드럽게 박스를 까 보자 1 Optional binding (guard) : 부드럽게 박스를 까 보자 2. Cyclonic complexity를 줄이기 위해. guard란? 함수의 시작 부분에 써서 반드시 가져가야 할 조건들을 검사하는 파트. if문의 subset개념으로 if문을 대체할 수 있음. if문보다 가독성이 좋음. Nil coalescing : 박스를 까봤더니, 값이 없으면 디폴트 ..
Single Responsibility (단일 책임) Type Safety (타입이 분명해야 할 때) - 부모 혹은 다른 자식 클래스들과 구분을 명확하게 해야 할 때 Shared Base Classes (다자녀가 있을 때) Extensibility (확장성이 필요한 경우) Identity (정체를 파악하기 위해)
클래스 Class를 쓰는 경우 두 object의 인스턴스 자체가 같음을 확인해야 할 때. 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우. call by reference. 클래스의 인스턴스는 힙 영역에 저장. 따라서 타입이 let일 경우에도 값의 변경이 가능. ex) let me = Person(health: 100)이라고 가정했을 때, me 자체의 타입은 let이지만 그 안의 내용은 Person클래스 타입의 새로 만들어진 인스턴스의 주소 값을 가지고 있는 상태입니다. (즉 힙 영역에 생성된 실제 person의 주소를 가리키고 있음) 따라서 체력을 깎는 me.damage(10)라는 메서드를 실행하면 let형태의 me의 값을 바꾸는 것이 아니라 me가 가리키는 실제 주소의 값을 바..
Delegate란 어떤 객체에서 일어나는 모든 일을 하나의 객체가 처리하지 않고 일부를 다른 객체에게 위임해 처리하는 것 UITextFieldDelegate를 예로 들겠습니다. class StudyViewController: UIViewController , UITextFieldDelegate { @IBOutlet weak var writingTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() writingTextField.delegate = self } func textFieldShouldReturn(_ textField: UITextField) -> Bool { writingTextField.endEditing(true)..