[SeSAC] 220816 TIL

2022. 8. 16. 17:38ยท๐ŸŒฑ SeSAC
๋ชฉ์ฐจ
  1. ๊ธฐ์ˆ  ์ปจํผ๋Ÿฐ์Šค
  2. ๋ชจ๋“ˆํ™”์™€ ์ ‘๊ทผ ์ œ์–ด
  3. ๋ชจ๋“ˆํ™”
  4. ์ ‘๊ทผ ์ œ์–ด
  5. extension ์•ž์—๋Š” open ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.
  6.  
  7. Framework, Library
  8. Framework
  9. Library
  10.  
  11.  
  12. Framework ๋งŒ๋“ค์–ด๋ณด์ž
  13. 1. Framework ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
  14. 2. Framework ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  15.  
  16. PageViewController
  17. 1. PageViewController(Root)์™€ ์ปจํ…์ธ ๋กœ ๋“ค์–ด๊ฐˆ Controller ๋งŒ๋“ค๊ธฐ
  18. 2. ์ฝ”๋“œ ์ž‘์„ฑ

๊ธฐ์ˆ  ์ปจํผ๋Ÿฐ์Šค

๊ธฐ์ˆ  ์ปจํผ๋Ÿฐ์Šค, ๋ธ”๋กœ๊ทธ ์ž์ฃผ ๋ณด๊ธฐ!

  • wwdc
  • if kakao
  • slash
  • tech blog

 


 

๋ชจ๋“ˆํ™”์™€ ์ ‘๊ทผ ์ œ์–ด

๋ชจ๋“ˆํ™”

์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. UI ์ปดํฌ๋„ŒํŠธ, ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค ๋“ฑ๋“ฑ์ด ์žˆ์„ํ…๋ฐ ์ด๋ฅผ ๋งค ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ง์ ‘ ์ž‘์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค ๋น„์Šทํ•œ ์„ฑ๊ฒฉ์˜ ์ฝ”๋“œ๋ผ๋ฆฌ ๋ชจ์•„์„œ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

  • ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ ๋„ ์ดํ•ดํ•ด๋ณผ ์ˆ˜ ์žˆ์Œ
  • ๋ชจ๋“ˆํ™”๋ฅผ ํ•ด๋ณด๋ฉด ์ ‘๊ทผ ์ œ์–ด์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์กฐ๊ธˆ ๋ช…ํ™•ํ•ด์ง (- ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ EasyKit์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๋А๊ผˆ๋˜ ๋ถ€๋ถ„์ด๋‹ค.)
  • ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋Š” ์กฐ๊ธˆ ๊ฐ€๋ฒผ์›Œ์ง
  • ๊ฐ๊ฐ ์—ญํ• ์— ๋Œ€ํ•œ ๋ถ„๋ฆฌ๊ฐ€ ๋ช…ํ™•ํ•ด์ง
  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ, UI ๋ชจ์•„๋†“๊ธฐ

์ ‘๊ทผ ์ œ์–ด

์ด๋ก ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์ž.

  • ๋ฉ”์„œ๋“œ ๋ณ„๋กœ, ํด๋ž˜์Šค ๋ณ„๋กœ ๋‹ค ๋‹ค๋ฅธ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • open, public : ๋ชจ๋“ˆ ๊ฐ„, ๋‘˜์˜ ์ฐจ์ด๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ์˜ ์—ฌ๋ถ€(- ์ƒ์†์˜ ์—ฌ๋ถ€, ํด๋ž˜์Šค์ธ์ง€ ์•„๋‹Œ์ง€)
  • internal : ๋ชจ๋“ˆ ๋‚ด, ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ internal ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ ์ ์–ด์ค˜๋„ ๋จ
  • fileprivate, private : ๋ชจ๋“ˆ ๋‚ด, ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ ‘๊ทผ ์ œ์–ด์ž

extension ์•ž์—๋Š” open ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

  • extensions cannot be declared 'open'; declare individual members as 'open' instead

 


 

Framework, Library

๋‘˜ ๋‹ค ๊ฐœ๋ฐœ์„ ์‰ฝ๊ฒŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์ฝ”๋“œ, ๋„๊ตฌ ๋ชจ์Œ์ธ ๊ฒƒ ๊ฐ™์€๋ฐ ๊ทธ ์ฐจ์ด๊ฐ€ ์ฃผ์ฒด์™€ ๊ธฐ๋Šฅ์˜ ์ œ์–ด๊ถŒ์ด ์–ด๋А ์ชฝ์— ์žˆ๋А๋ƒ๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์กฐ๊ธˆ ๋” ์ž์œ ๋„๊ฐ€ ๋‚ฎ๊ณ  ์จ์•ผํ•˜๋Š” ๊ฒƒ๊ณผ ์ง€์ผœ์•ผ ํ•˜๋Š” ๋ฃฐ ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค. UIKit ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์กฐ๊ธˆ ๋” ์™€ ๋‹ฟ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‹ค์Œ ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ , ๋ฉ”์„œ๋“œ์— ์›ํ•˜๋Š” ๋™์ž‘๋งŒ ๋„ฃ์–ด๋‘๋ฉด ์‹คํ–‰๋˜๋Š” ์‹œ์ ๊ณผ ์‹ค์ œ ๋™์ž‘์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•Œ์•„์„œ ํ•˜๊ฒŒ ๋œ๋‹ค.

Framework

  • ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์ฒด์™€ ๊ธฐ๋Šฅ์˜ ์ œ์–ด๊ถŒ์ด ์—ญ์ „, ๋‚ด ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœ๋‹นํ•จ
  • ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋‚˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ, ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ๊ฒŒ, ์‘์ง‘๋„๋Š” ๋†’๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Library

  • ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ
  • ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๊ณ  ์‚ฌ์šฉ, ๋‚ด ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœํ•จ

์‚ฌ์‹ค ์ฐจ์ด๊ฐ€ ์™„์ „ํžˆ ์™€๋‹ฟ์ง€๋Š” ์•Š๋Š”๋‹ค. ์ข€ ๋” ๊ณต๋ถ€ํ•ด๋ณด๊ณ  static ยท dynamic ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋„ ์กฐ์‚ฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 


 

Framework ๋งŒ๋“ค์–ด๋ณด์ž

  • ์•ฝ๊ฐ„ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ฒ˜๋Ÿผ ์ƒ๊ฒผ๋Š”๋ฐ ์ •ํ™•ํžˆ๋Š” ๋‹ค๋ฆ„

1. Framework ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

์ผ๋ฐ˜์ ์œผ๋กœ ๋งŒ๋“œ๋Š” App์ด ์•„๋‹ˆ๋ผ Framework๋ฅผ ์„ ํƒํ•ด์„œ ๋งŒ๋“ ๋‹ค.

์ œ์–ด์ˆ˜์ค€์„ ์ž˜ ์ง€ํ‚ค๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

2. Framework ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์ด ๋ถ€๋ถ„์€ ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ์—๋„ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์–ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝ๋งŒ ํ•œ๋‹ค.

  1. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ์œ„์น˜์—์„œ ์šฐํด๋ฆญ - Add Files to๋ฅผ ํ•œ ๋’ค Framework ํ”„๋กœ์ ํŠธ์˜ xcodeproj ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
  2. Target - General - Frameworks, Libraries, and Embedded Content์—์„œ Framework๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

 


 

PageViewController

1. PageViewController(Root)์™€ ์ปจํ…์ธ ๋กœ ๋“ค์–ด๊ฐˆ Controller ๋งŒ๋“ค๊ธฐ

2. ์ฝ”๋“œ ์ž‘์„ฑ

์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ๋ฉด ํŽ˜์ด์ง€ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ์ถ”๊ฐ€
var pageViewControllerList: [UIViewController] = []
// ๋ฐฐ์—ด์— ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ์ถ”๊ฐ€
func createPageViewController() {
    let sb = UIStoryboard(name: "WalkThrough", bundle: nil)
    let vc1 = sb.instantiateViewController(withIdentifier: FirstViewController.reuseIdentifier) as! FirstViewController
    let vc2 = sb.instantiateViewController(withIdentifier: SecondViewController.reuseIdentifier) as! SecondViewController
    let vc3 = sb.instantiateViewController(withIdentifier: ThirdViewController.reuseIdentifier) as! ThirdViewController
    pageViewControllerList = [vc1, vc2, vc3]
}
// ํŽ˜์ด์ง€ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ์„ธํŒ…
func configurePageViewController() {
    view.backgroundColor = .green
    
    delegate = self
    dataSource = self
    
    guard let first = pageViewControllerList.first else { return }
    setViewControllers([first], direction: .forward, animated: true)
}
// ์ขŒ์šฐ ์ „ํ™˜์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„
extension WalkThroughViewController: UIPageViewControllerDelegate, UIPageViewControllerDataSource {
    
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        
        // ํ˜„์žฌ ํŽ˜์ด์ง€ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ๋ณด์ด๋Š” ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ธ๋ฑ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ
        guard let viewControllerIndex = pageViewControllerList.firstIndex(of: viewController) else { return nil }
        
        let previousIndex = viewControllerIndex - 1
        return previousIndex < 0 ? nil : pageViewControllerList[previousIndex]
    }
    
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
        
        guard let viewControllerIndex = pageViewControllerList.firstIndex(of: viewController) else { return nil }
        
        let nextIndex = viewControllerIndex + 1
        return nextIndex >= pageViewControllerList.count ? nil : pageViewControllerList[nextIndex]
    }
}

'๐ŸŒฑ SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SeSAC] 220818 TIL  (0) 2022.08.20
[SeSAC] 220817 TIL  (0) 2022.08.20
[SeSAC] 220812 TIL  (0) 2022.08.15
[SeSAC] 220811 TIL  (0) 2022.08.15
[SeSAC] 220810 TIL  (0) 2022.08.14
  1. ๊ธฐ์ˆ  ์ปจํผ๋Ÿฐ์Šค
  2. ๋ชจ๋“ˆํ™”์™€ ์ ‘๊ทผ ์ œ์–ด
  3. ๋ชจ๋“ˆํ™”
  4. ์ ‘๊ทผ ์ œ์–ด
  5. extension ์•ž์—๋Š” open ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.
  6.  
  7. Framework, Library
  8. Framework
  9. Library
  10.  
  11.  
  12. Framework ๋งŒ๋“ค์–ด๋ณด์ž
  13. 1. Framework ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
  14. 2. Framework ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  15.  
  16. PageViewController
  17. 1. PageViewController(Root)์™€ ์ปจํ…์ธ ๋กœ ๋“ค์–ด๊ฐˆ Controller ๋งŒ๋“ค๊ธฐ
  18. 2. ์ฝ”๋“œ ์ž‘์„ฑ
'๐ŸŒฑ SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [SeSAC] 220818 TIL
  • [SeSAC] 220817 TIL
  • [SeSAC] 220812 TIL
  • [SeSAC] 220811 TIL
taeeekki
taeeekki
๐ŸŒฑiOS ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ํ•™์ƒ์ด ๋งŒ๋“œ๋Š” ๋ธ”๋กœ๊ทธ
taeeekki
taekki.dev
taeeekki
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • All (130)
    • ๐ŸŒฑ SeSAC (40)
    • โ˜€๏ธ 100DaysOfSwift (18)
    • ๐ŸŽ iOS & Swift (60)
    • ๐Ÿ“ฉ Essay (3)
    • ๐ŸŽ Tip (4)
    • ๐ŸŒˆ UIUX (2)
    • ๐Ÿง OOP (1)
    • ๐Ÿฅณ Side Project (0)
    • โœจ Problem Solving (1)
    • ๐Ÿ“ Note (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

swift
commit
CollectionView
๊นƒํ—ˆ๋ธŒ
์˜ต์…”๋„
github
URLSession
Realm
PageViewController
๊ฐœ์ธ ์•ฑ ์ถœ์‹œ
iOS UIUX
์Šค์œ„ํ”„ํŠธ
tableView
GIT
OOTD
iOS H.I.G
์˜ค์˜คํˆฌ๋‘
๊ฐœ๋ฐœ
ํด๋กœ์ €
์†ํŠธ
network
IOS
SeSAC
์Šค์œ„ํ”„ํŠธ ๋ฌธ๋ฒ•
Diary App
iOS ์•ฑ ์ถœ์‹œ
TIL
github tip
์Šค์œ„ํ”„ํŠธ๋ฌธ๋ฒ•
100DaysOfSwift

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.3
taeeekki
[SeSAC] 220816 TIL
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.