热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何将Objective-C和Swift混合使用以构建cocoapods框架》经验,为你挑选了1个好方法。

我正在创建一个快速框架,并且想在该框架中使用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文件?

如何在这里制作标题桥?



1> 小智..:

我意识到回答您的问题可能有点晚了,但是我最近不得不做与您相同的事情-创建一个Swift Framework的cocoapod,其中混合了一些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" => "info@code.myname.com" }

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文件。


推荐阅读
  • 我的iOS开发入门自学路径
    我有一个清单,列着希望在大学里完成的事。比如,学一门乐器,和朋友去旅游,搭建自己的博客,去滑翔,看各主题的书籍。其中一项是,写自己的App并且上架。去年开始,我准备完成这一项,所以 ... [详细]
  • iOS Open Source : Popover API for iPhone
    iOS Open Source : Popover API for iPhone ... [详细]
  • [WWDC] What's New in Swift 4 ?
    前言本文主要是笔者小结WWDC2017中《WhatsNewinSwift》的Session,其中也掺杂了些《What’sNewinFoundation》, ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • java.lang.Class.getDeclaredMethod()方法java.lang.Class.getDeclaredMethod()方法用法实例教程-方法返回一个Met ... [详细]
  • swift中的uitable
    下面是一个静态的tableview于图可知有两个section头是11..和22..,其中222是一个tableviewcell!并且从图可知道样式是leftD ... [详细]
  • Iamworkingonaprojectwhichrequiresopentokandcallkitfornotifyingusers.However,theappli ... [详细]
  • 在应用开发中少不了界面元素的布局、适配、自适应。之前苹果已经为我们提供了 AutoLayout 和 SizeClasses,方便我们实现页面的自适应弹性布局。但对于一些复杂的交互界 ... [详细]
  • 认识Cutestrap,一个轻量级CSS框架
    CutestrapisabrandnewCSSframework.ThisarticlepresentsCutestrap’sfeaturesandputstheframework ... [详细]
  • 转载自http:blog.csdn.netzhifeiyu2008articledetails8829637打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF ... [详细]
  • 不过在obj-c中有二个与之接近的概念&amp;quot;非正式协议(interface)&amp;quot;与&amp;quot;正式协议(protoca ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
author-avatar
灬毋黑色灬_447
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有