如何在iOS应用程序的同一个项目中集成Objective-C和Swift窗格
我在iOS应用程序中做Objective-C。 但问题是我想添加一些Objective-C apis到我之前用cocoa豆荚成功添加的,但是,现在我想通过cocoa豆荚添加Swift Api,但是在安装时得到的问题如下。
[!]用Swift编写的Pod只能作为框架集成; 添加use_frameworks!
到您的Podfile或目标select使用它。 正在使用的Swift Pod是:apis
但我不能手动添加,因为它的大api,它包含子文件夹。
但是,如果我从use_frameworks!中删除了“#”键,它将被安装,但是,在我的项目中找不到旧的Objective-C apis获取文件。 即使我有通过cocoa豆荚安装框架/ apis非常基本的知识。
任何人都可以build议我如何过来这个。
我有这个问题一次,我做的是use use_frameworks!
像你提到的那样,然后我改变了Objective-C imports
的写法。
命令use_frameworks!
将每个窗格转换为一个Framework,因此在您的项目中,.h和.m文件不再像import
通常那样可见。
因此,不要使用例如#import <AFNetworking/AFNetworking.h>
,而是使用@import AFNetworking;
从我自己的经验来看,也许这只是我的项目的一个特例。 但是把所有东西都变成框架会减慢Xcode的编译时间,而且由于某种原因,我的App Package变得更大了。
use_frameworks!
只有当它们是dynamic框架而不是静态库时才能用于Objective-C
pod。 大多数stream行的第三方库都使用dynamic框架,如AFNetworking
, GoogleMaps
等。
确保所有的Objective-C
pod都是dynamic框架。 如果你不确定用cocoapods
创build一个示例项目并使用use_frameworks!
。 尝试逐个添加所有的豆荚,并找出哪一个是罪魁祸首。
Podfile文件:
platform :ios, '10.0' use_frameworks! def pods pod 'Alamofire', '= 4.4' pod 'SwiftyJSON' '= 3.1.4' pod 'MBProgressHUD' end target 'YourProject' do pods end
YourProject桥接,Header.h
#import <MBProgressHUD/MBProgressHUD.h>
构build设置
- 创build一个自定义的cocoa豆荚与故事板
- Podfile->右键单击-> Pod安装
- 使用CookieCutter Swift创建iOS框架
- “pod安装”后的空荚头文件夹
- 制作自己的CocoaPods-第3部分
- CocoaPods UIImageView + AFNetworking.h无法识别的select器setImageWithURLRequest
- XCode 6 CocoaPods错误:目标覆盖“OTHER_LDFLAGS”版本设置
- 架构armv7的未定义符号:“_OBJC_CLASS _ $ _ GGLContext”,引用自:AppDelegate.o中的objc-class-ref
- Xcode 9:使用Swift 3.1编译的模块不能在Swift 4.0中导入