Swift와 Objective-C 연계 with Xcode

3988 단어 SwiftObjective-C

환경



Xcode 9.3



쓴 것


  • Swift에서 Objective-C 코드를 호출하는 방법
  • Objective-C에서 Swift 코드를 호출하는 방법

  • Swift에서 Objective-C 코드를 호출하는 방법



    흐름


  • Build Settings 설정
  • Bridging-Header.h 추가
  • Swift에서 호출하는 파일을 2로 추가 한 브리징 헤더로 가져옵니다.

    1. Build Settings 설정



    Packaging의 Define Modules 항목을 true로 설정합니다.



    2. Bridging-Header 추가



    새 파일 추가에서 Objective-C 소스 파일을 추가하면 대화 상자가 표시되므로 Create Bridging Header 버튼을 누릅니다.



    Build Settings에서 Bridging-Header에 -Bridging-Header.h 파일이 지정되어 있는지 확인합니다.



    3. Bridging-Header로 가져오기



    SwiftCallObjc-Bridging-Header.h
    // Swiftから呼び出すObjファイルをimportする
    #import "Foo.h"
    

    Objective-C에서 Swift를 호출하는 방법



    흐름


  • Build Settings 설정
  • Swift API를 호출하는 .m 파일에서 -Swift.h 파일을 가져옵니다

  • 1. Build Settings 설정



    Packaging의 Define Modules 항목을 true로 설정합니다.

    2. <Product_Module_Name>-Swift.h 파일을 가져옵니다.


    Product Module Name 는 ※Build Settings* 에서 확인할 수 있다.

    Foo.m
    // モジュール名がObjcCallSwiftの場合 (以下のファイルは自動的に生成される)
    #import "ObjcCallSwift-Swift.h"
    

    NOTE: 영숫자 이외의 문자가 사용되고 있는 경우는, 그 부분을 언더 스코어로 옮겨놓는다.

    Foo.m
    //モジュール名が Swift-Objcの場合
    #import "Swift_Objc-Swift.h"
    

    요약



    제목에서 With Xcode 로 한 이유는 \<ProjectModuleName\>-Bridging-Header.h 이나 \<ProjectName\>-Swift.h 는 어디까지나 Xcode를 통한 기능이기 때문.
    Xcode를 거치지 않는 경우는, 각각 모듈화해 import 하는 방법이 있다.
    아래를 참조하십시오.
    [swift] C 라이브러리 모듈화

    참조


  • How can I import Swift code to Objective-C?
  • How do i call swift function from objective c file in same project? [duplicate]
  • Importing Project-Swift.h into a Objective-C class…file not found
  • [Qiita] 어쨌든, Objective-C에서 Swift 인스턴스를 만나고 싶을 때 조심하십시오.

  • [Qiita] Swift의 attribute 정리 [Swift4 대응] #@objcMembers
    ※ 튜플은 obj가 되지 않는다.
  • 좋은 웹페이지 즐겨찾기