extension์์ Override
13 Jun 2018 | swift extension override@objc
superํด๋์ค์์ extension์ผ๋ก ํจ์๋ฅผ ์ถ๊ฐํ๊ณ subํด๋์ค์์ override ํ๊ณ ์ถ์๋
@objc
ํค์๋๋ฅผ ๋ถ์ฌ์ผํ๋ค.
๋ฐ๊ฒฌ
UIView extension์์ ์๋ก์ด ํจ์๋ฅผ ์ ์ธํ๊ณ ๋ค๋ฅธ ์ปค์คํ
๋ทฐ(UIViewํ์
)์์ ํด๋น ํจ์ ๋ด๋ถ๋ฅผ ์ข ๋ค๋ฅด๊ฒ ์ฐ๊ณ ์ถ์ด์ override
๋ฅผ ์ ์ธํ๋๊น, Overriding non-@objc declarations from extensions is not supported
๋ผ๋ ์๋ฌ ๋ฐ๊ฒฌ.
ํด๊ฒฐ
๊ทธ๋ผ @objc
๋ถ์ด๋ฉด ํด๊ฒฐ!
class MySuperClass {
}
extension MySuperClass {
@objc func otherNumber() -> Int {
return 1
}
}
class MySubclass : MySuperClass {
@objc override func otherNumber() -> Int {
return 2
}
}
var sup = MySuperClass()
var sub = MySubclass()
print(sup.otherNumber()) // 1
print(sub.otherNumber()) // 2
(๊ณ ๋ฏผ)
- ์ฒ์์ ์ด ๋ฐฉ๋ฒ์ ์ฐ๋ ค๊ณ ํ๋๊ฑด ์ปค์คํ ๋ทฐ ํด๋์ค์์๋ ๋น์ทํ ๋์์ ํด์ผํ์ง๋ง, UIViewํด๋์ค์ ์ ์ธํด๋์ ๊ฒ ์ฒ๋ผ ์์ ํ ๊ฐ๊ฒ ๋์ํ ์๋ ์์ด์์์
- ๋น์ทํ ๋์์ด๊ณ , ๊ฐ์ ํด๋์คํ์ ์ด๋๊น ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ด์ overrideํ๋ ๊ฒ์ธ๋ฐ,
- ์ ์ด์ ํด๋น ํ์
์๋ค๊ฐ ํ์ํ ํจ์๋ฅผ extension์ผ๋ก ๊ตฌํํด๋๊ณ ๊ทธ ํจ์๋ฅผ ๋
override
ํด์ ๋ณ๊ฒฝํ๊ณ ์ฌ์ฉํ๋๊ฒ ํฉ๋ฆฌ์ ์ธ๊ฑธ๊น?
Comments