2017-02-07 4 views
2

私は素早いフレームワークを作成しており、フレームワークでobjective-cクラスを使いたいと思います。objective-cとswiftをどのように組み合わせてcocoapodsフレームワークを作るのですか

私はpod lib create frameworkNameを使用してライブラリを作成しました。

それは私のpodspecファイルです:私はObjcクラスが含まれているobjc.hobjc.mファイルを持っている

http://guides.cocoapods.org/syntax/podspec.html 

Pod::Spec.new do |s| 
s.name    = 'MyFramework' 
s.version   = '0.1.0' 
s.summary   = 'A short description of RadiantSensorsRSPOS.' 

s.description  = <<-DESC 
TODO: Add long description of the pod here. 
        DESC 
s.license   = { :type => 'MIT', :file => 'LICENSE' } 
s.ios.deployment_target = '8.0' 

s.source_files = 'MyFramework/Classes/**/*' 
s.public_header_files = 'Pod/Headers/*.h' 
# s.frameworks = 'UIKit', 'MapKit' 
# s.dependency 'CocoaAsyncSocket' 
end 

。私はこのObjcクラスをMyFramework.swiftに使用しなければなりません。

標準アプリケーション(非フレームワーク)では、ヘッダーブリッジを作成してobjc.hファイルをインポートするため、Objcクラスにアクセスできました。

ここでObjcクラスを使用するにはどうすればよいですか?

objc.hobjc.mのファイルはどこに置く必要がありますか?

ヘッダーブリッジの作成方法は?

答えて

3

ご質問にお答えするのが少し遅れたかもしれませんが、私は最近あなたと同じことをしなければなりませんでした。いくつかのObjective Cコードを混ぜたSwift Frameworkのココアポッドを作成してください。

SwiftベースのフレームワークをXcode(8.2以上で使用)で作成すると、ターゲットと同じ名前の傘型ヘッダーファイル(.h)が生成されます。したがって、フレームワークのターゲットが「MyFrameworkTarget」と呼ばれる場合、Xcodeが追加する傘のヘッダーは「MyFrameworkTarget.h」と呼ばれます。他のSwiftとObjective Cソースコードファイルと共に、このヘッダをココアポッドに含めることが重要です。一例として、

が、ここではiOSとMacOSの両方を対象とフレームワークにスウィフトとObjective Cのソースファイルを結合作業podspecファイルです。この特定の例では

Pod::Spec.new do |s| 

s.name   = "MyFramework" 
s.version  = "1.0.0" 
s.summary  = "Example cocoapod spec for a mixed language framework" 
s.description = <<-DESC 
    Example cocoapod spec for a mixed language framework that targets both iOS and macOS. 
DESC 

s.homepage  = "https://github.com/username/MyFramework" 

s.license  = "Apache License, Version 2.0" 

s.author  = { "My Name" => "[email protected]" } 

s.ios.deployment_target = "9.0" 
s.osx.deployment_target = "10.11" 

s.source  = { :git => "https://github.com/username/MyFramework.git", :tag => "#{s.version}" } 

s.source_files  = 'Shared/*.{swift,h,m}' 
s.ios.source_files = 'MyFrameworkMobile/*.h' 
s.osx.source_files = 'MyFrameworkMac/*.h' 

end 

が、私はスウィフトと目的を持っていますiOSとmacOSの両方のために 'Shared'フォルダに構築され、 's.source_files'によってpodspecで参照されるフレームワークを構成するCファイル。次に、Xcodeが生成し、私の2つのフレームワークターゲットiOS(MyFrameworkMobileという名前)とmacOS(MyFrameworkMacという名前)のために編集したフレームワーク傘ファイルは、 's.ios.source_files'と 's.osx.source_files'それぞれ、私の例では、私は2つのターゲットを持っているので、iOSとmacOSでは別々です。実際のヘッダーは、フォルダ 'MyFrameworkMobile'と 'MyFrameworkMac'にあります。ここで

はpodspecが指しているものを視覚化するために、私の実際のディスク上のプロジェクトフォルダのレイアウトです:

MyFramework.podspec 
MyFramework.xcodeproj 

MyFrameworkMac 
    MyFrameworkMac.h 
    Info.plist 

MyFrameworkMobile 
    MyFrameworkMobile.h 
    Info.plist 

Shared 
    MyFramework.swift 
    MyFramework.h 
    MyFramework.m 

私はこの情報がお役に立てば幸いです。 GitHub上のSwiftとObjective Cファイルの混合プロジェクト用のポッドファイルを作成する方法をデモするサンプルプロジェクトがあります。https://github.com/axl411/NVMDummyTestPod

関連する問題