Slide 1

Slide 1 text

PROTOCOL EXTENSION MOBILE PROGRAMMING JAN 30TH

Slide 2

Slide 2 text

1. EXTENSION

Slide 3

Slide 3 text

ςΩετ EXTENSION? ▸ ೚ҙͷClass΍Struct, ProtocolΛจࣈ௨Γ֦ுͰ͖Δݴޠػೳͷࣄ ▸ ࣗ෼͕ఆٛͨ͠Class͚ͩͰͳ͘ɺ͢Ͱʹఆٛ͞Ε͍ͯΔClassͳ Ͳ΋֦ு͢Δ͜ͱ͕Մೳ(UIViewControllerͱ͔) ▸ ͜͜Ͱݴ͏֦ுͱ͸ϝιου΍ϓϩύςΟͷ௥Ճ, Protocolͷ࠾༻ Λࢦ͢ ▸ ඇৗʹศརͳػೳͰ͸͋Δ͕અ౓ΛकΒͳ͍֦ு͸ࠇຐज़ͱݺ͹ ΕڪΕΒΕ͍ͯΔ

Slide 4

Slide 4 text

ςΩετ EXTENSION(จ๏) extension String { } Ωʔϫʔυ extension ʹଓ͚ͯ ֦ு͍ͨ͠Class໊Λऔಘ

Slide 5

Slide 5 text

ςΩετ EXTENSION(จ๏) extension String { var length: Int { return self.count } } Ωʔϫʔυ extension ʹଓ͚ͯ ֦ு͍ͨ͠Class໊Λࢦఆ PropertyΛ௥ՃͰ͖Δ͕ Computed Property ͷΈ

Slide 6

Slide 6 text

ςΩετ EXTENSION(จ๏) extension String { var length: Int { return self.count } func toInt(with defaultValue: Int) -> Int { return Int(self) ?? defaultValue } } Ωʔϫʔυ extension ʹଓ͚ͯ ֦ு͍ͨ͠Class໊Λࢦఆ PropertyΛ௥ՃͰ͖Δ͕ Computed Property ͷΈ ϝιου͸ClassͳͲͱಉ͡Α͏ʹ௥ՃՄೳ

Slide 7

Slide 7 text

ςΩετ EXTENSION(จ๏) extension String { var length: Int { return self.count } func toInt(with defaultValue: Int) -> Int { return Int(self) ?? defaultValue } init(date: Date, format: String) { // ௕͘ͳΔͷͰׂѪ } } Ωʔϫʔυ extension ʹଓ͚ͯ ֦ு͍ͨ͠Class໊Λࢦఆ PropertyΛ௥ՃͰ͖Δ͕ Computed Property ͷΈ ϝιου͸ClassͳͲͱಉ͡Α͏ʹ௥ՃՄೳ ΠχγϟϥΠβ΋ClassͳͲͱಉ͡Α͏ʹ௥ՃՄೳ

Slide 8

Slide 8 text

ςΩετ EXTENSION(จ๏ͦͷ̎) extension UIViewController: UITableViewDataSource { func numberOfSections(in tableView: UITableView) -> Int { return 0 } // ௕͘ͳΔͷͰׂѪ } Class໊ʹଓ͚ͯProtocol໊Λࢦఆ

Slide 9

Slide 9 text

2. PROTOCOL EXTENSION

Slide 10

Slide 10 text

ςΩετ PROTOCOL EXTENSION? ▸ ઌ΄Ͳ࿩ͨ͠ExtensionΛ࢖ͬͯ ProtocolΛ֦ு͢Δࣄ ▸ Protocol͸ඇৗʹศརͳػೳͰ͋Δ͕ఆٛ͞ΕͨϝιουΛ ࠾༻͢Δͨͼʹ࣮૷͠ͳͯ͘͸͍͚ͳ͍ख͕ؒ͋Δ ▸ Protocol ExtensionΛ࢖ͬͯProtocolʹσϑΥϧτͷ࣮૷Λ ࣋ͨͤͯखؒΛܰݮ͢Δ͜ͱ͕Ͱ͖Δ ▸

Slide 11

Slide 11 text

ςΩετ PROTOCOL EXTENSION(จ๏, ఆٛ) protocol DismissDelegate {} ·ͣ͸ProtocolΛఆٛ͢Δ͕֦ு͍ͨ͠ϝιου͸ͬͪ͜ʹ͸ॻ͔ͳ͍

Slide 12

Slide 12 text

ςΩετ PROTOCOL EXTENSION(จ๏, ఆٛ) protocol DismissDelegate {} extension DismissDelegate { } ·ͣ͸ProtocolΛఆٛ͢Δ͕֦ு͍ͨ͠ϝιου͸ͬͪ͜ʹ͸ॻ͔ͳ͍ extension Ωʔϫʔυʹଓ͚ͯProtocol໊Λࢦఆ

Slide 13

Slide 13 text

ςΩετ PROTOCOL EXTENSION(จ๏, ఆٛ) protocol DismissDelegate {} extension DismissDelegate { func dismiss(vc: UIViewController) { vc.dismiss(animated: true, completion: nil) } } ·ͣ͸ProtocolΛఆٛ͢Δ͕֦ு͍ͨ͠ϝιου͸ͬͪ͜ʹ͸ॻ͔ͳ͍ extension Ωʔϫʔυʹଓ͚ͯProtocol໊Λࢦఆ ֦ு͍ͨ͠ϝιουΛ࣮૷

Slide 14

Slide 14 text

ςΩετ PROTOCOL EXTENSION(จ๏, ࠾༻ଆ) class ViewController: UIViewController { } extension ViewController: DismissDelegate {} ֦ுͨ͠ProtocolΛ࠾༻ͤ͞Δ͕࣮૷Λॻ͘ඞཁ͕ແ͍ʂʂ

Slide 15

Slide 15 text

ςΩετ PROTOCOL EXTENSION(จ๏, ࠾༻ଆ) class ViewController: UIViewController { @IBAction func dismissAction(_ sender: UIButton) { dismiss(vc: self) } } extension ViewController: DismissDelegate {} ֦ுͨ͠ProtocolΛ࠾༻ͤ͞Δ͕࣮૷Λॻ͘ඞཁ͕ແ͍ʂʂ DismissDelegateͷextensionͷ࣮૷͕ݺ͹ΕΔ