2022. 8. 26. 11:45ใProgramming/Swift
https://www.youtube.com/watch?v=xiS5gJOIQxI
https://dongminyoon.tistory.com/14
https://babbab2.tistory.com/81
https://babbab2.tistory.com/82
https://babbab2.tistory.com/83
// TODO: completion handler ์ดํด
func translatinEnglishToKorean(text: String, completion: @escaping () -> Void) {
// text๋ completion์ด๋ผ๋ ํด๋ก์ ๋ฅผ ๋ฐ์ ๊ฑฐ๊ณ , ๋ค์ ๋ด์ฉ์ ์ด ํจ์์ ์คํ ๊ณผ์ , ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ closure ์คํ
englishToKoreanTranslator.translate(text) { [self] translatedText, error in
self.resultKoreanText = translatedText ?? ""
completion()
}
}
OpenAIManager.shared.makeRequest(json: jsonPayload) { [weak self] (str) in
DispatchQueue.main.async {
self?.mlKit.translatinEnglishToKorean(text: str) {
self?.outputKoreanWord = self?.mlKit.resultKoreanText ?? ""
self?.outputTextView.text = self?.outputKoreanWord
// ์ด๊ฒ @escaping ํด๋ก์ (ํจ์ ์คํ ๋ฐ์ผ๋ก ๋์์ ํ ์ผ)
}
spinner.stopAnimating()
spinner.removeFromSuperview()
view.removeFromSuperview()
}
}
ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋ถ๋ฌ์จ ํด๋ก์ ๋ฅผ ๋ค๋ฅธ ๊ณณ์์ ํธ์ถํ๋ ค๊ณ ํ๋ฉด ์๋ฌ (๋จผ์ ์ฃฝ์ผ๋๊น)
: ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๊ณ @escaping์ ์ ์ธํด ํ์ถ ํด๋ก์ ๋ก ์ฌ์ฉ
let yes = UIAlertAction(title: "์", style: .default, handler: { [weak self] _ in
UserDefaults.standard.set("", forKey: "roomCode")
UserDefaults.standard.set("", forKey: "name")
UserDefaults.standard.set("", forKey: "userIdentifier")
UserDefaults.standard.set("", forKey: "forUserID")
self?.navigationController?.popToRootViewController(animated: true)
})
- in ์ผ๋ก ํด๋ก์ ์ ํค๋ / ๋ฐ๋ ๊ตฌ๋ถ!
: head: (parameter, parameter, ... ) -> return type
- ์ ์ญํจ์: ์ฃผ๋ณ์ ์ด๋ ํ ๊ฐ๋ ์บก์ณํ์ง ์์ (๊ฑ ํ๋ผ๋ฏธํฐ ๋๊ธธ๋ ๋ฐ์ ๊ฐ๋ง ์ฌ์ฉํ๊ณ , ๋ฐํํ๊ณ ๋ฑ๋ฑ)
- ์ค์ฒฉํจ์: ์์ ์ ํฌํจํ๊ณ ์๋ ํจ์์ ๊ฐ๋ง ์บก์ณ ๊ฐ๋ฅ (์ฝ๋ ์์ ์ inner ํจ์๊ฐ outer ํจ์์ ๊ฐ์ ํ์ฉํ๋ค๋ ๋ ผ๋ฆฌ๊ฐ ๋น์ฐํจ)
: ํ์ง๋ง, ์๋ ํจ์ ๋ฐ๊นฅ์์๋ ์ฃฝ์ (์ฝ๋ ํ์ถ์ด ๋ถ๊ฐ๋ฅ ํจ -> ์ด๊ฒ escaping์ ์ฌ์ฉํ๋ ์ด์ )
- ์ต๋ช ํจ์(๋ค ํด๋ก์ ์ง๋ง, ์ข์ ์๋ฏธ๋ก ํด๋ก์ )
- self์ ๋ํ ์ฐธ์กฐ๋ฅผ [Closure Capture Lists]๋ฅผ ์ด์ฉํ์ฌ weak, unowned๋ก ์บก์ณ
์บก์ณ: ํด๋ก์ ๊ฐ ํ์ฉํ๋ ์ฃผ๋ณ ๊ฐ(parameter)๋ค์ ref๋ก ๊ฐ์ ธ์ค๋๋ฐ, ์ด๋ฅผ value๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ํ์ฉํ๋ ๊ฒ!
์ด๋ ํด๋ก์ ๋ด๋ถ์์ value๋ก ์บก์ณ๋ ๊ฐ์ ๋ณ๊ฒฝ์ํฌ ์ ์๋ค. (์์ ์ทจ๊ธ)
- ํด๋ก์ ๋ ref -> heap
- ์ [weak self]?
self๋ฅผ ์บก์ณํ ๋, self์ ๋ํ ์ํ์ฐธ์กฐ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ์ํด weak self๋ฅผ ์ฌ์ฉ
: self ์ ์บก์ณ? ํด๋ก์ ๋ด๋ถ์์ self. ์ ๊ทผ ์ฌ์ฉํ๋๊น,,
https://babbab2.tistory.com/83 ๋ ์ฝ์ด๋ณด๊ธฐ
์ด ๋ ต ๋ค
'Programming > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ค๋ฅธ file (viewController) ๊ฐ์ ์กฐ์ (0) | 2022.08.31 |
---|---|
๐ firestore database ์ ๊ทผ ๋ฐ ์ญ์ code, firestore Queries ๐ (0) | 2022.08.28 |
๐ Fileprivate ๋? (0) | 2022.07.21 |
๐ฉโ๐ป UUID(Universally Unique IDentifier)๋? (0) | 2022.06.30 |
๐ARC (Automatic Reference Counting) : ์๋ ์ฐธ์กฐ ๊ณ์ฐ (0) | 2022.06.24 |