Cocoapods方式导入OC库和swift库

本文是一篇关于如何使用Cocoapods在iOS项目中导入Swift库Alamofire和Objective-C库AFNetworking的详细教程。内容包括创建新项目、安装Cocoapods、编辑Podfile、解决安装问题以及设置桥接头文件,确保库成功导入并能正常使用的步骤。
Cocoapods 是 iOS 应用的包管理程序。它简化了第三方库的导入并且将帮你处理库之间的依赖。在这个教程中,我们将会使用 cocoa pods 导入 Alamofire(swift库)和AFNetworking(OC库) 这两个个第三方库 。本教程的环境 基于 iOS8 和 Xcode7.3.1
打开 Xcode 使用 Single View Application 创建一个项目。项目名称可以使用 IOS8SwiftCocoapodsTutorial,其他配置项可以自定义。选择 Swift 作为开发语言,并且设备项选中 iPhone

新建项目
咱们的这个教程中会用到一个字体,可以从 这里下载,并加入到项目中。接下来, 关闭 Xcode 项目并打开终端。首先我们需要 安装 cocoa pods。这个过程将会用到 ruby环境,而 Mac OS X 系统已经自带了 ruby。 ruby -v 查看当前Ruby的版本。在终端中输入如下命令:
sudo gem install cocoapods

译者注:因某些原因不能安装成功的同学,
ERROR: Error installing cocoapods:
activesupport requires Ruby version >= 2.2.2.
可以参考唐巧的这篇 博客
升级ruby版本
如果出现ruby版本升级问题,可以参考ruby升级笔记
然后再次执行 sudo gem install cocoapods

下一步clone 项目
pod setup --verbose


一、导入swift库Alamofire
首先,搜索需要的第三方库是否支持 CocoaPods ,执行命令:
1 $ pod search Alamofire

新建项目 CocoaPodsDemo然后 进入 Xcode 项目文件目录输入命令pod init新建 Podfile 文件
pod init

之后需要 编辑 Podfile 文件,让它包含 FontBlaster 这个第三方库。使用如下命令打开它
open -a Xcode Podfile
不要使用文本编辑去编辑Podfile,使用Xcode编辑,或者使用终端敲命令去编辑。
编辑后的 Podfile 文件如下
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

target 'CocoaPoasDemo' do

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'AlamofireImage', '~> 2.0'

end

译者注:这里的版本号 1.0.8 为译者加上,FontBlaster 已经支持 Swift 2.0,如果不指定为该版本号,会下载最新的 FontBlaster,这要求 Xcode 7.x版本。如果你使用的是 Xcode6.x 版本,需要指定该版本号。
项目的 target 是 iOS8.0, use_frameworks! 这句是必须的,因为 Swift 使用的是框架而不是静态库。 pod 'FontBlaster' 告诉 Cocoapods 你想在项目中使用 FontBlaster 。 保存对文件的修改,并在终端中输入以下命令pod install ,但这里又会遇到问题了,上网找了之后发现用这个命令已经不行了,用  pod install --verbose --no-repo-update 就可以, 前面的被墙啦!!
bogon:CocoaPoasDemo frosoft$ pod install --verbose --no-repo-update
.........
.........
Sending stats
- Alamofire, 3.4.2
- AlamofireImage, 2.4.1
Pod installation complete! There is 1 dependency from the Podfile and 2 total
pods installed.
bogon:CocoaPoasDemo frosoft$

FontBlaster 和相关依赖都会被自动安装。
完成后 用Xcode打开.xcworkspace白色文件,不再打开.xcodeproj那个蓝色文件

打开后工程目录如下,红色框内仍然是工程文件:

测试是否引入成功:
在swift文件中添加 import Alamofire 没有报错则成功。

二、导入OC库 AFNetworking
1、先关闭工程,修改Podfile,添加 pod 'AFNetworking',然后 update一下podfile再打开工程
target 'CocoaPoasDemo' do

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'AlamofireImage', '~> 2.0'

pod 'AFNetworking'
end

swift语言使用cocoapods配置Podfile文件时要加上use_framework!这句代码,作用是把三方库打包成静态库


2、 建立一个桥接文件 Bridging-Header.h头文件

3、修改头文件内容

#ifndef CocoaPoasDemo_Bridging_Header_h
#define CocoaPoasDemo_Bridging_Header_h

#import "AFNetWorking.h"

#endif /* Bridging_Header_h */

4、 设置一个 User Header Search Paths,否则在需要用三方库的地方是调不出来的。 在target——>Build Setting里找到search Paths ,双击 User Header Search Paths后面的空白处 设置目录路径为 ${SRCROOT}   , 后边选择 recursive。

5、测试导入是否成功: import AFNetworking


在 Objective-C Swift 混合编程项目中添加第三方,尤其是使用 CocoaPods 进行依赖管理时,需要注意多个关键点,包括桥接头文件的设置、`use_frameworks!` 的影响以及第三方的正确引入方式。 ### 1. 配置桥接头文件 当在 Swift 中调用 Objective-C 编写的类或方法时,需要创建一个桥接头文件(Bridging Header),以便 Swift 能够识别这些类方法。Xcode 通常会在第一次添加 Objective-C 文件到 Swift 项目时自动提示创建该文件。 例如,如果有一个名为 `TestClass` 的 Objective-C 类,其头文件为 `TestClass.h`,则应在桥接头文件中添加如下导入语句: ```objective-c #import "TestClass.h" ``` 如果 Xcode 报错找不到桥接头文件,则需检查以下几点: - 确保桥接头文件的路径在项目的 Build Settings 中正确配置。 - 检查文件名是否与项目名称匹配,如 `YourProject-Bridging-Header.h`。 - 确保文件类型设置为 "Objective-C Bridging Header"。 ### 2. 使用 CocoaPods 引入第三方 在混编项目中使用 CocoaPods 引入第三方时,Podfile 的配置尤为重要。若项目中包含 Objective-C 第三方,则应避免使用 `use_frameworks!`,因为这可能导致静态链接冲突问题[^3]。 若必须使用 `use_frameworks!`,例如为了支持 Swift 的动态框架特性,则需要确保所有 Objective-C 第三方也以框架形式提供,或者调整构建设置中的 `Other Linker Flags`,移除 `-l` 开头的静态引用,仅保留 `$(inherited)`[^3]。 ### 3. Swift 调用 Objective-C 方法示例 在 Swift 中调用 Objective-C 的类方法时,除了需要正确的桥接头文件外,还需注意命名规则。例如,Objective-C 中的方法名会被 Swift 自动转换为更符合 Swift 命名习惯的形式。 假设有一个 Objective-C 方法定义如下: ```objective-c - (void)showHelloWithNameWithName:(NSString *)name; ``` 在 Swift 中可以这样调用: ```swift let test = TestClass() test.showHelloWithName(withName: "I") ``` Swift 会自动将带有参数的方法转换为更易读的形式,其中每个冒号 (`:`) 后面的部分都会成为参数标签的一部分。 ### 4. Objective-C 调用 Swift 方法 在 Objective-C 中调用 Swift 方法时,需要导入自动生成的 Swift 头文件,其名称格式为 `YourProject-Swift.h`。例如,若要在 Objective-C 的 `ViewController` 中调用 Swift 实现的 `TestClass`,代码可能如下所示: ```objective-c #import "ViewController.h" #import "OC_SwiftMixedUseDemo-Swift.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; TestClass *test = [[TestClass alloc] init]; [test showHelloWithNameWithName:@"I"]; } @end ``` 上述代码中,`#import "OC_SwiftMixedUseDemo-Swift.h"` 是 Swift 生成的接口头文件,它允许 Objective-C 代码访问 Swift 类及其方法[^2]。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛马尼格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值