@objc dynamic var videoDevice: AVCaptureDevice! 에 대해

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • Ky J
      참가자
      • 글작성 : 9
      • 답글작성 : 3

      안녕하세요. 카메라 하드웨어에 대해 독학중에 궁금증이 생겨 질문 올립니다.

      일단 제가 알고 있는 지식부터 얘기 하겠습니다. 틀렸다면 지적해주시면 감사하겠습니다!

      @objc dynamic은 이제 런타임시 swift 런타임을 안쓰고 objective-C 런타임을 사용을 하는데 

      dynamic dispatch로 설정한다는건데요. dynamic dispatch를 쓴다는 것은 서브 클래스에 오버라이드 메소드가 있다는 뜻으로 알고 있습니다.

      dynamic dispatch를  쓰면 성능상 안좋은걸로 알고 있는데.. AVCaptureDevice를 왜 

      @objc dynamic 쓰는지가 궁금합니다. 아이폰 하드웨어(?)쪽 코드는 다 objective-C로 되어있어서 그런건가요?? 

      답변해주시면 감사하겠습니다!

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580
      1. dynamic dispatch를 사용하는 것이 꼭 서브 클래스의 오버라이드가 있다는 것을 의미하지는 않습니다.
      2. AVCaptureDevice는 Objective-C 코드로 구현되어 있는데, 우리가 작성하는 Swift 코드는 @objc dynamic을 명시해주지 않으면 컴파일러가 컴파일 중 최적화를 거쳐 static dispatch로 전환할 가능성도 있기 때문에 명확히 dynamic dispatch를 활용하기 위해 attribute를 지정해줍니다.
        WWDC의 Understading Swift Performance 세션을 살펴보면 조금 더 도움이 될 것 같습니다.
1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom