Protocol์ ๊ฒฝ์ฐ POP๋ผ๋ ๊ฐ๋ ์ผ๋ก Apple์์ ๋ฐ์ด์ฃผ๋? ๊ฐ๋ ์ด๋ค.
Protocol
- ์ด๋ค ์์ /๊ธฐ๋ฅ์ ์ํ method, property์ interface ์ ์์ ์ฌ์ฉ
- class, struct, enum์ ์ฑํ๋๋ฉฐ ๊ทธ๋ ํด๋น type์ ์๊ตฌ ์ฌํญ์ ๊ตฌํ ํด์ผ ํจ
- ์ด๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ, type์ด protocol์ ์ค์ํ๋ค๊ณ ํจ
Objective-C์ ๋นํด ๋์์ง ์
- type์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ
- protocol extension์ ์ด์ฉํ์ฌ default implementation ๊ฐ๋ฅ
- ์ค์ํ๋ ๋ชจ๋ type์ด ์ถ๊ฐ์์ ์์ด ํ์ฅ ๊ธฐ๋ฅ์ ๊ฐ์ง
- protocol ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ POP๋ผ ๋ถ๋ฆ
Protocol Type
- ๋ชจ๋ type๊ณผ ๋์ผํ ๋์ ๊ฐ๋ฅ
- return type ๊ฐ๋ฅ
- property๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- container(array, dictionary etc)์ element๋ก ์ฌ์ฉ ๊ฐ๋ฅ
Inheritance
- ๊ธฐ์กด ์กด์ฌํ๋ ๋ค๋ฅธ protocol์ ์์๋ฐ์ ํ์ฅ ๊ฐ๋ฅ
- class์ ๋ฌ๋ฆฌ multiple inheritance ๊ฐ๋ฅ
Class-only Protocol
- class์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋๋ก ์ ์ฝ ๊ฐ๋ฅ
Protocol Composition
- ๋๊ฐ ์ด์ protocol์ ๋ง์กฑํ๋ type์ ์ ์ํ ์ ์์
is
, as
์ฐ์ฐ์์ ์๋ฏธ
is
- protocol conform์ True
as
as?
- protocol conformํ์ง ์์ผ๋ฉด nil
as!
- protocol conformํ์ง ์์ผ๋ฉด runtime error
Optional Protocol Requirement
- Objective-C์์ ์ฒ๋ผ Optional ์ ์ ๊ฐ๋ฅ
- ๋จ, Objective-C class ์์ ๋ฐ์ class๋ง ์ฑํ๊ฐ๋ฅ
@objc
attribute ์ฌ์ฉํ์ฌ ์ ์ธ@objc optional var ...
@objc optional func ...
Protocol Constraint
- protocol์ conformํ ์ ์๋ ํ์ ์ ๋ํ ์ ์ฝ์ ๊ฑธ ์ ์ด์ ใ
where
์ฌ์ฉ
Protocol Extension
Default function
Default Value
- extension์ผ๋ก default value๋ฅผ ๊ตฌํํด๋๋ฉด, ํ์์์๋ง ์ถ๊ฐ ๊ตฌํํ๋๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ์
optional
์ ๋์ฒดํ ์ ์์@objc
attribute ์ง์ธ ์ ์์
Constraint ์ถ๊ฐ
-
ํ์ฅ์ ์ ์ฝ์ ๊ฑธ ์ ์์
-
where
์ฌ์ฉ -
protocol ์์ฒด ๊ธฐ๋ฅ (๋ด๋ถ์ ๊ตฌํ๋์ด ์๋)๋ง ์ด์ฉํด์ ๊ธฐ๋ฅ ํ์ฅ ํด์ผํจ
-
๊ธฐ์กด์ ๊ทธ protocol์ ์ค์ํ๋ ๋ชจ๋ type์ด ํ์ฅ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ฒ ๋จ