20161018
使用软件: CocoaPods 1.1.0 beta2, Xcode 7.3.1, Xcode 8.0
BridingHeader作用是在Swift中包含Objc源文件, 在Cocoapods 0.38之前, 引用每个Pod中的Objc第三方框架时, 都需要在BridingHeader中#import "AFNetworking.h" 或 #import <AFNetworking/AFNetworking.h>(以AFNetworking为例, 下同), 如下图:
Xcode 7.3.1和Xcode 8中两种包含("" 和<>)方式都可以, 但是实践发现若是引用Pods, 最好使用<>的形式.
但是自从CocoaPods中的PodFile支持use_frameworks!语句之后, 如果在PodFile中显示标识了use_frameworks! , 所有用CocoaPods下载的框架都将被打成.framework动态库. 如下图:
而我们知道, 在这之前, CocoaPods是把下载到的框架打成.a静态库, 这就是为什么我们在以前Objc开发的时候, 经常看到一个libPods.a的静态库. 如下图:
现在典型的PodFile如下:
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'test' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for test
pod 'AFNetworking'
pod 'IQKeyboardManager', '3.3.7'
end
在PodFile中使用use_frameworks!功能的好处:
1.不需要再依赖
BridingHeader来引用Pod中的代码了, 而是直接在需要用到的.swift文件中import AFNetworking. 如下图:
2.不会影响项目中的Objc源文件包含Pods, 只需要在Objc中继续
#import <AFNetworking/AFNetworking.h>就可以了, 比如下图所示:
3.在
import AFNetworking的.swift文件中, 如果按住command键查看框架代码, 显示的将会是Swift形式的代码; 而#import <AFNetworking/AFNetworking.h>的Objc源文件中, 显示的则是Objc形式的代码. 请看下面两张图:
从.swift文件中查看源码
从.m文件中查看源码
其实, 在Xcode 7.3.1和Xcode 8中, 如果继续在BridingHeader中用#imort ""包含Pod, 会报编译错误, 而#import <>则不会报错(但是无效, 依然无法在.swift文件中使用相应代码), 如下图:

这篇博客介绍了在Xcode 7.3.1和8.0中,如何处理Swift项目中使用CocoaPods引入Objective-C库的问题。文章提到了Bridging Header的#import方式变化,以及在使用#use_frameworks!时框架被打包为动态库的情况。作者建议使用#import <FrameworkName/FrameworkName.h>来避免动态库问题,并指出这种方式带来的好处,包括直接在Swift文件中引用代码、不影响Objective-C源文件以及代码查看体验的提升。
1967

被折叠的 条评论
为什么被折叠?



