如何将Objective-C和Swift混合使用以构建cocoapods框架

瓦希德

我正在创建一个快速的框架,我想在该框架中使用Objective-C类。

我曾经pod lib create frameworkName创建图书馆。

这是我的podspec文件:

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.hobjc.m包含的文件Objc类。我已经使用这个ObjcMyFramework.swift

在标准应用程序(非框架)中,我做了一个头桥并导入了objc.h文件,因此可以访问Objc类。

我如何在Objc这里使用课程?

我应该在哪里放objc.hobjc.m文件?

如何在这里制作标题桥?

克里斯托弗·迪斯泰罗

我意识到回答您的问题可能有点晚了,但是最近我不得不和您做同样的事情-创建一个Swift Framework的coapapod,其中混合了一些Objective C代码。

当您在Xcode(我使用的8.2或更高版本)中创建基于Swift的框架时,它会生成称为伞头文件(.h)的文件,该文件与目标名称相同。因此,如果您的框架目标称为“ MyFrameworkTarget”,则Xcode添加的伞形标头称为“ MyFrameworkTarget.h”。将此标头以及其他Swift和Objective C源代码文件包括在cocoapod中非常重要。

例如,这是一个有效的podspec文件,它将Swift和Objective C源文件组合到针对iOS和macOS的框架中:

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

在这个特定示例中,我有Swift和Objective C文件,这些文件构成了为iOS和macOS构建的框架,位于文件夹“ Shared”中,并在podspec中由“ s.source_files”引用。然后在's.ios.source_files'和's.osx.source_files'中引用Xcode生成并为我的两个框架目标iOS(我命名为MyFrameworkMobile)和macOS(我命名为MyFrameworkMac)编辑的框架伞文件,分别。在我的示例中,它们针对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

我希望这个信息帮助。https://github.com/axl411/NVMDummyTestPod上有一个很好的示例项目,演示了如何在GitHub上为Swift和Objective C文件的混合项目创建pod文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

iOS Swift框架:如何将Objective C代码正确导入swift框架?

您如何将数据从Objective C传递到Swift?

如何将Swift String桥接到Objective C NSString?

如何将Swift代码导入Objective-C?

Objective-C如何将NSURL转换为NSString?

Objective-C-如何将数组写入文件?

如何将AWS SDK for iOS与Objective-C而非Swift结合使用?

如何将C#与javascript混合使用以更改html?

如何将Objective-C块转换为Swift闭包?

如何将Swift类转换为UnsafePointer,例如Objective-C中的__bridge

如何将Objective-C代码转换为Swift代码-错误处理,iOS

如何将Objective-C initWithError:方法桥接到Swift

我们如何将Objective-C常量导入为Swift类型?

如何将Objective-C App委托转换为Swift?

如何将Swift结构作为参数传递给Objective-C方法

如何将Objective-C NSError指针传递给Swift函数?

如何将Swift类传递给需要类的Objective-C方法?

如何将Objective-C`sortedArrayUsingSelector:NSSelectorFromString`转换为swift?

iOS如何将pushviewcontroller与NavigationController一起使用(Objective-c)

如何将std :: function从Objective-C ++传递给C ++方法

Objective-C如何将C结构初始化为属性?

如何将这行代码从 C++ 翻译成 Objective-C

Objective-C-如何将文本串联/添加到标签

如何将Objective-C ++对象添加到NSMutableDictionary?

如何将 UI 更新推送到 Objective-C 中的平均线程

iOS-如何将数组作为参数传递给AFNetworking(Objective-C)

Objective-C如何将击键转换为ASCII字符代码?

如何将整个文件夹或程序包从Java转换为Objective-C?

如何将 HEXString (NSString) 转换为 ByteArray Objective-C