์๋ ํ์ธ์~
์ค๋์ Timer๋ฅผ ์ด์ฉํด์ API๋ฅผ ๋ฐ๋ณต ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค : )
์งํํ๊ณ ์๋ ํ๋ก์ ํธ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ ์ ์ํ๋ฅผ ํ์ธํด์ผ ํ๋ ๋ก์ง์ด ์์์ต๋๋ค.
๋ ์ค๋ฅด๋ ๋ฐฉ๋ฒ์ด Timer ๋ฐ์ ์์๊ณ
์ด์ฌํ ์ฐพ์๊ฐ๋ฉฐ ์ ์ฉํ ๋ด์ฉ์ ๊ธฐ๋กํ๋ ค๊ณ ํฉ๋๋ค.
๋จผ์ Timer์ ๋ํด์ ๊ฐ๋ตํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์๋์ ์ ํ ๊ฐ๋ฐ์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
Timer๋
ํน์ ์๊ฐ ๊ฐ๊ฒฉ์ด ๊ฒฝ๊ณผํ ํ ์คํ๋๊ฒ ํ๊ณ ์ง์ ๋ ๋ฉ์์ง๋ฅผ ๋์ ๊ฐ์ฒด์๊ฒ ๋ณด๋ด๋ ๊ฒ์ด๋ผ๊ณ ๋์ด์์ต๋๋ค.
์กฐ๊ธ ๋ ์คํฌ๋กค์ ๋ด๋ฆฌ๋ค ๋ณด๋ฉด ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง์๋ํ ๋ด์ฉ์ด ๋์ต๋๋ค.
์ ๋ ์๊ฐํด์ค ๋ฉ์๋ ์ค์์
scheduledTimer(timeInterval:target:selector:userInfo:repeats:)๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
ํน์ ํ ๋ทฐ์ปจํธ๋กค๋ฌ์ ์ง์ ์
๋ฐ๋ก ๋์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํน์ ํ ํธ๋ฆฌ๊ฑฐ๊ฐ ํ์ํ์ง ์์ ์๋์ผ๋ก ์์ ์์ ์ ์ ํ ํ์๊ฐ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฌ์ฉํ๋ ๋ฉ์๋์ ๋ํด์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
Timer.scheduledTimer
Timer.scheduledTimer(timeInterval: <TimeInterval>,
target: <Any>,
selector: <Selector>,
userInfo: <Any?>,
repeats: <Bool>)
- timeInterval: ํ์ด๋จธ ์คํ ๊ฐ๊ฒฉ์ผ๋ก ์ด๋ฅผ ์ ๋ ฅํ์๋ฉด ๋ฉ๋๋ค. ( Double )
- target: ํจ์ selector๊ฐ ํธ์ถ๋์ด์ผ ํ๋ ํด๋์ค ์ธ์คํด์ค์ ๋๋ค.
- selector: ํ์ด๋จธ๊ฐ ์คํ๋ ๋ ํธ์ถํ๋ ํจ์๋ฅผ ๋งํฉ๋๋ค.
- userInfo: selector ์๊ฒ ์ ๋ฌํ ๋ฐ์ดํฐ, ์์ผ๋ฉด nil
- repeats: ํ์ด๋จธ์ ๋ฐ๋ณต ์ฌ๋ถ๋ก Bool ํ์ ์ผ๋ก ๋์ด์์ต๋๋ค.
์ฌ์ฉ๋ฐฉ๋ฒ
1. Timer ๊ฐ์ฒด ์์ฑํ๊ธฐ
- ๊ฐ์ฅ ๋จผ์ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ ์ธํฉ๋๋ค.
var apiTimer = Timer()
2. Selector ๋ฉ์๋ ๋ง๋ค๊ธฐ
- ํน์ ํ ๊ฐ๊ฒฉ๋ง๋ค ํธ์ถํ๊ณ ์ถ์ API๋ฅผ ์ด๊ณณ์ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
- ๊ฒช์๋ ์ด์ : sender๋ฅผ Timer๋ก ์ค์ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ ๊ฒฝ์ฐ, ํ์ด๋จธ๋ฅผ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
@objc func updateUserMatchStatus(sender: Timer) {
//API๋ฅผ ํธ์ถ
}
3. ํธ๋ฆฌ๊ฑฐ ํน์ ๋ทฐ์ปจํธ๋กค๋ฌ์ ๋ผ์ดํ ์ฌ์ดํด์ ๋ง๊ฒ ์ด๊ธฐํ
- ์ค๋ช ํ๋ ๊ฒ์ฒ๋ผ ํด๋น ๋ทฐ์ปจํธ๋กค๋ฌ์ ์ง์ ์ ์คํํด์ผ ํ๋ Timer์๊ธฐ ๋๋ฌธ์ viewDidLoad์์ ์์ฑํ์ต๋๋ค.
- ํน์ ํ ํธ๋ฆฌ๊ฑฐ(๋ฒํผ ํด๋ฆญ, ์ ์ค์ฒ ๋ฑ๋ฑ)๊ฐ ์๋ค๋ฉด ํด๋น ๋ฉ์๋์ ํจ๊ป ์ ์ด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
override func viewDidLoad() {
super.viewDidLoad()
apiTimer = Timer.scheduledTimer(timeInterval: 5,
target: self,
selector: #selector(updateUserMatchStatus(sender:)),
userInfo: nil,
repeats: true)
}
์์ ์ฝ๋๋
ํด๋น ๋ฉ์๋๋ฅผ 5์ด ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณตํด์ ํธ์ถํด์ค๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ํ์ด๋จธ๋ฅผ ์ข ๋ฃํด์ฃผ๋ ๋ฉ์๋๋ฅผ ์คํํด์ผํฉ๋๋ค.๋ฌผ๋ก , API๊ฐ ํ ๋ฒ ์์๋๊ณ ๋์ ์ข ๋ฃ๋ ํ์๊ฐ ์๋ค๋ฉด ์์ฑํ์ง ์์๋ ์ข์ต๋๋ค.
apiTimer.invalidate()
์ค๋์ Timer๋ฅผ ํ์ฉํด API๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์์ฑํด๋ดค์ต๋๋ค.
๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋ผ ์ด๋ง ๐๐ป ๐๐ป ๐๐ป