๐ŸŒฑ SeSAC

[SeSAC] 220826 TIL

taeeekki 2022. 8. 29. 19:06

๋ ˆ์ด์•„์›ƒ

  • ์ด์ œ ๋ทฐ์— ๋Œ€ํ•ด์„œ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ์—†๋‹ค. ๋ ˆ์ด์•„์›ƒ ์งœ๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋™์ผํ•˜๊ณ , ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ Dynamicํ•˜๊ฒŒ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • Realm, TableView ๊ฐฑ์‹ , TableView ๋กœ๋“œ

 

Realm ์‚ญ์ œ ์‹œ ๋ฌธ์ œ ๋ฐœ์ƒ

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let favorite = UIContextualAction(style: .normal, title: "์‚ญ์ œ") { action, view, completion in
        
        // - ํ”„๋กœํผํ‹ฐ๋กœ ๊ด€๋ฆฌ
        // - 1. ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •ํ™•์„ฑ
        // - 2. ๊ฐ€๋…์„ฑ
        let task = self.tasks[indexPath.row]
        
        // ์‚ญ์ œ์‹œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋™์‹œ์— ์ ‘๊ทผํ•˜๋‹ค๋ณด๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
        // - Record -> Image (๋ฌธ์ œ ๋ฐœ์ƒ)
        // - Image -> Record (์ˆœ์„œ ๋ณ€๊ฒฝ ์‹œ ๋ฌธ์ œ ํ•ด๊ฒฐ) => ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹˜.
        
        self.removeImageFromDocument(fileName: "\(task).jpg")
        try! self.realm.write {
            self.realm.delete(task)
        }
        self.readDiary()
    }
    
    return UISwipeActionsConfiguration(actions: [favorite])
}
  • Realm์€ Table(๋ฐ์ดํ„ฐ)์„ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— View๋ฅผ ๊ฐฑ์‹ ํ•˜๊ธฐ๋งŒ ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ์— ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๋ ฌ ๋˜๋Š” ํ•„ํ„ฐ ๋“ฑ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ธ๋ฑ์Šค, ๋ ˆ์ฝ”๋“œ๋กœ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— fetchRealm(custom function)์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•ด ์˜ฌ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •๋ฆฌ

ํ•„์š”์„ฑ์ด ๋А๊ปด์ง„๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•ด๋ณด์ž.

๋ฌธ์ œ ์ƒํ™ฉ

  • ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ์—ฌ๊ธฐ์ €๊ธฐ์— ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์‚ฐ์žฌ๋˜์–ด ์žˆ๋‹ค.
  • ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋” ๋งŽ์•„์ง€๋Š” ์ˆœ๊ฐ„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ
  • ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์ด ์ถ”๊ฐ€๋œ๋‹ค๊ฑฐ๋‚˜ ์ปฌ๋Ÿผ์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด, ํ…Œ์ด๋ธ”๋ช…์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด ๋ชจ๋“  ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฝ”๋“œ๊ฐ€ ์ˆ˜์ •๋˜์–ด์•ผ ํ•œ๋‹ค.

Repository Pattern

  1. Protocol๋กœ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  2. ์˜์กด์„ฑ ์ฃผ์ž…

์ตœ์ ํ™”

https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst

Swift Optimization Level

Release(Production Mode)์ผ ๋•Œ๋Š” ์ตœ์ ํ™” ํ•„์š”

  1. Onone
  2. O
  3. OSize

WMO(Whole Module Optimization)

์ „์ฒด ๋ชจ๋“ˆ ์ตœ์ ํ™”

  • WMO๋Š” ์ž๋™์œผ๋กœ ์ ์šฉ๋˜์–ด ์žˆ์Œ
  • WMO๋ฅผ ํ•ด์ œํ•˜๋ฉด private ํ‚ค์›Œ๋“œ๊ฐ€ ๊ฒฐ๊ตญ ์˜๋ฏธ ์—†์–ด์ง