18 Jul 2018
|
TIL
2018.07.16 ~ 17
- ํด๊ฐํด๊ฐ ๋ฌผ๋์ด๋ฌผ๋์ด :desert_island:
2018.07.18
- ์คํ ์ด์ฑ
- ํ
์ด๋ธ๋ทฐ์ ๋ค์ด๊ฐ๋ ์ด๋ฒคํธ ๋ฑ์ง๋ฅผ ์ํ UILabel ์ปค์คํ
ํด๋์ค ๊ตฌํ
2018.07.19
TODO
- URLSession ํจ์์์ ํด๋ก์ ํธ์ถ๋๋ ์์
- ๋คํธ์ํฌ ๊ฐ์๋ฃ๊ณ ๋คํธ์ํนํ๋ก๊ทธ๋๋ฐ ์ ๋ฆฌ
- step4 PR๋ณด๋ด๊ธฐ(์
๋ฐ์ดํธ๊ฐ ํ์ํ header์ ๋ํ ์ ๋ณด๋ง ๋ฐ์์ค๋ฉด ์
๋ฐ์ดํธ๋๋ ์์ผ๋ก ํ๊ธฐ..)
- URLSession ๋น๋๊ธฐ์ฒ๋ฆฌโฆโฆ.
์ง๋ฌธ๊ฑฐ๋ฆฌ
- Create a session configuration
- Create a session (with delegate)
- Create Task object with URL
- Send request with closure
- Wait for response (background)
- Wait and receive for data
- Finish or Error by closure
session() - 1,2,3 task๋ง๋ค๊ณ sessionํจ์ ์ข
๋ฃ
task.resume() - 4,5??
viewDidLoad์ข
๋ฃ
sessionํจ์์ taskํด๋ก์ ์คํ- ๋ค๋ฅธ thread์์..-6,7?
(mainthread์์๋ viewdidLoadํจ์๊ฐ ์ข
๋ฃ๋์ผ๋ฏ๋ก ์๋ฌด ์ผ๋ ์ผ์ด๋์ง์๋์ค)
ํด๋ก์ ์ response๋ฐ๊ณ ViewController์ storeItems ๊ฐ์ฒด์ ๊ฐ์ด ํ ๋น๋๋ ๋ธ๋ญ์์ handler()์คํ
์ด ์ํ์์ viewdidLoad๋๋๋ฉด ๋น ํ
์ด๋ธ๋ทฐ๋ก ์ด๋ฏธ ๊ทธ๋ ค์ก๊ณ ๊ธฐ๋ค๋ฆฌ๋์ค์ธ๊ฑด๊ฐ?
- viewDidLoad๊ฐ๋๋๋ฉด storeItems๊ฐ ์๋ ์ํ์์ ํ
์ด๋ธ๋ทฐ ๊ทธ๋ฆผ
- ์ธ์
์ผ๋ก๋ถํฐ storeItems๋ฅผ ๋ฐ์ผ๋ฉด
2018.07.20
- ๋๊ธฐ์ ๋น๋๊ธฐ
override func viewDidLoad() {
doSomething1()
doSomething2()
resetTableView()
doSomething3()
}
private func resetTableView() {
DispatchQueue.main.async { [weak self] in
self?.tableView.reloadData()
}
}
// resetTableView๋ reloadData๋ฅผ ํธ์ถํ๊ณ ๋๋๊ณ ๋ค๋ฅธ ์ฝ๋๊ฐ ์คํ๋๋ค. ๋ค๋ฅธ ์ฝ๋๊ฐ ์คํ๋๋ ์์ค์ reloadData๋ ๋ค๋ฅธ ์ค๋ ๋์์ ์ผ์ ํ๊ณ ์์
// viewDidLoad()์์ resetTableView์์ reloadData()๊ฐ ์๋ฃ๋์ง๋ ์์๋๋ฐ doSomething3์ด ์คํ๋๋ค.
- mainํ(serial queue)์
self?.tableView.reloadData
์ฝ๋๋ธ๋ญ์ ๋ฃ์
- async๋ผ๋ ๋ป์ resetTableView(): (worker, but ์ผ์ ์ํค๋)ํจ์๋ ํ์ ๋ฃ์ ์ฝ๋๋ธ๋ญ(์ด ๋ํ worker์ง๋ง ์ด ๊ด๊ณ์์๋ ์ผ์ ํ๋ ํจ์์)์ธ
self?.tableView.reloadData
์ด ์๋ฃ๋๋ ๋ง๋ ์คํ๋ง ์ํค๊ณ (์ผ๋ง ์ํค๊ณ )์ข
๋ฃ๋๊ฒ ๋ค๋ ๋ป์
- ์ผ์ ์ง์ํ๋ ์ชฝ๊ณผ ์ง์๋ฐ์๊ฑธ ์ฒ๋ฆฌํ๋ ์ชฝ์ ๊ด๊ณ๋ฅผ ํญ์ ์๊ฐํ์
- ์ผ์ ์ง์ํ๋ worker(assignor)๊ณผ ์ผ์ ์ง์๋ฐ์์ ์ฒ๋ฆฌํ๋ worker(assignee)๋ฅผ ํธ์์ ์ ๋ ๊ฒ ๋ถ๋ฅธ๋ค๊ณ ๊ฐ์
- Queue๋ ์ผ๋จ ์๊ด์์ด
.sync
๋ก ํธ์ถํ๋์ง .async
๋ก ํธ์ถํ๋์ง๋ก ๊ตฌ๋ถํ์.
- ๋น๋๊ธฐ,
async
: assignor๋ assignee์๊ฒ ์ผ์ ์ํค๊ณ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋ค. ๋ฐ๋ผ์ assignor๊ฐ ํ๋ ๋ค๋ฅธ ๋ง์ ์ผ๋ค๊ณผ ํจ๊ป ๋ณด๋ฉด ์ด๋ค๊ฒ ๋จผ์ ์๋ฃ๋ ์ง ๋ณด์ฅ ํ ์ ์๋ค.
- ๋๊ธฐ,
sync
: assignor๋ assignee์๊ฒ ์ผ์ ์ํค๊ณ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋ค. ์ด๋๋ assignor๊ฐ ํ๋ ๋ค๋ฅธ ๋ง์ ์ผ๋ค๊ณผ ์์๊ฐ ๋ณด์ฅ๋๋ค.
- ๋ค๋ง ์ฃผ์ํ ์ ์ main queue์์ syncํ๊ฒ ๋์ํ๊ฒ ํ ๋์ธ๋ฐ, assignor๊ฐ ๋ฉ์ธํ์์ ๋ ๋ค๋ฅธ assignee์๊ฒ ๋ฉ์ธํ์์ syncํ๊ฒ ๋์ํ๋๋ก ํธ์ถํ๋ฉด ์๋ก ์์
์ด ์๋ฃ๋๊ธฐ๋ง ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ๋๋ฝ ์ด๋ฐ์ ํ ์ ์์.
- Queue: Concurrent / Serial ํ๋ ์ข ๋ค๋ฅธ ์ด์ผ๊ธฐ์
- serial: ์ฑ๊ธ์ค๋ ๋, Concurrent: ๋ฉํฐ์ค๋ ๋
- serial์ ์ฑ๊ธ์ค๋ ๋์ด๊ธฐ๋๋ฌธ์, ๋ฐ๋๋ฝ ๋ฐ์์ ์ํ์ด ์์
05 Jul 2018
|
iOS
GestureRecognizer
ํผ์ ๊ณต๋ถ&์ ๋ฆฌ์ฉ์ผ๋ก ์ ํ ๊ฐ๋ฐ์ ๋ฌธ์ Handling UIKit Gestures Article ๋ฒ์ญ
์ฐธ๊ณ ๋งํฌ
Handling UIKit Gestures
GestureRecognizer๋ฅผ ์ฌ์ฉํ์ฌ ํฐ์น๋ฅผ ๊ฐ๋จํ๊ฒ ํธ๋ค๋งํ๊ณ ์ผ๊ด์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ(user experience๋ฅผ ๋ง๋ค ์ ์๋ค.
Overview
- GestureRecognizer๋ ํฐ์น๋ ํ๋ ์ค ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ค.
- ํ๋ ์ด์์ GestureRecognizer๋ฅผ ์ด๋ค ๋ทฐ์๋ ๋ถ์ผ ์ ์๋ค.
- GestureRecognizer๋ ์งํ๊ณผ ์ด๋ฒคํธ ํด์์ ํ์ํ ๋ชจ๋ ๋ก์ง์ ์บก์ํํ๊ณ ํจํด(์ด๋ฒคํธ ์ข
๋ฅ)์ ์ผ์น์ํจ๋ค. (match them to a known pattern. )
- ๋ง๋ ์ด๋ฒคํธ๊ฐ ๊ฐ์ง๋๋ฉด, GestureRecognizer๋ ํ๊ฒ ๊ฐ์ฒด์ ๋
ธํฐ๋ฅผ ๋ณด๋ธ๋ค.
- (Gesture recognizer notifying its target)
- ์์์ ๋งํ๋ ํ๊ฒ๊ฐ์ฒด๋ viewController์ผ์๋, view์ผ์๋, ํน์ ์ฑ ๋ด์ ๋ค๋ฅธ ๊ฐ์ฒด์ผ์๋์๋ค.
- Action: ํด๋น ์ ์ค์ณ๊ฐ ๊ฐ์ง๋์๋ ํธ์ถ๋ ๋ฉ์๋
- Target: ์ ์ค์ณ๋ฅผ ์ฒ๋ฆฌํ ํ๊ฒ ๊ฐ์ฒด
action methods
- GestureRecognizer๋ target-action ๋์์ธํจํด์ ์ฌ์ฉํ์ฌ noti๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ์๋ฅผ๋ค์ด UITapGestureRecognizer๊ฐ ์ ์ฉ๋ ๋ทฐ์์ single-finger tap์ด ๊ฐ์ง๋๋ฉด, ์ก์
๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- GestureRecognizer์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์ก์
๋ฉ์๋๋ฅผ ์ธ์๋ก ๋๊ฒจ์ค
- ex)
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(cardDragged(_:)))
- ์ก์
๋ฉ์๋: ํด๋น ์ ์ค์ณ๊ฐ ๊ฐ์ง๋์๋ ํธ์ถ๋ ๋ฉ์๋
- ์ก์
๋ฉ์๋๋ UIGestureRecognizer sender๊ฐ์ฒด๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ๋๋ค.
- ํด๋น sender๊ฐ์ฒด๋ก ์ ์ค์ณ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ฌ ์ ์๋ค.
State property
- GestureRecognizer์ ์ก์
๋ฉ์๋๋ ์ ์ค์ณ์ ์ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์์ ํ๋๋ก ๊ตฌํํ ์ ์๋ค.
- Continuous Gesture
- .began
- .changed
- .ended
- .cancelled