我以前从未真正从事过iOS开发,也从未与CocoaPods(作为消费者或作者)一起工作过-但是我一直在迅速学习,因此可以为我的公司拼凑一个图书馆。
我使用pod lib create
开始了一个新的Objective-C项目(出于业务原因必须是Objective-C),然后开始进行研究。
现在,我正在尝试弄清楚如何使使用我的Pod的人可以导入我的库类。我在Xcode中具有以下文件夹结构:
- bfsdk
|- Podspec Metadata
||- bfsdk.podspec
||- README.md
||- LICENSE
|
|- Example for bfsdk
||- BFAppDelegate.h
||- BFAppDelegate.m
||- Main.storyboard
||- BFViewController.h
||- BFViewController.m
||- LaunchScreen.storyboard
||- Images.xcassets
||- Supporting Files
|||- bfsdk-Info.plist
|||- InfoPlist.strings
|||- main.m
|||- bfsdk-Prefix.pch
|
|- Tests
||- ...
|
|- Frameworks
||- Foundation.framework
||- CoreGraphics.framework
||- UIKit.framework
||- XCTest.framework
||- Pods_bfsdk_Example.framework
||- Pods_bfsdk_Tests.framework
|
|- Products
||- ...
|
|- Pods
||- Pods-bfsdk_Example.debug.xcconfig
||- Pods-bfsdk_Example.release.xcconfig
||- Pods-bfsdk_Tests.debug.xcconfig
||- Pods-bfsdk_Tests.release.xcconfig
- Pods
|- Podfile
|- Development Pods
||- bfsdk
|||- ReplaceMe.m
|||- Pod
||||- bfsdk.podspec
||||- LICENSE
||||- README.md
|||
|||- Support Files
||||- bfsdk.modulemap
||||- bfsdk.xcconfig
||||- bfsdk-dummy.m
||||- bfsdk-Info.plist
||||- bfsdk-prefix.pch
||||- bfsdk-umbrella.h
|
|- Frameworks
||- iOS
|||- CoreGraphics.framework
|||- Foundation.framework
|||- MobileCoreServices.framework
|||- Security.framework
|||- SystemConfiguration.framework
|||- XCTest.framework
|
|- Pods
||- Expecta
|||- ...
||- Specta
|||- ...
|
|- Products
||- ...
|
|- Target Supports Files
||- Pods-bfsdk_Example
|||- ...
||- Pods-bfsdk_Tests
|||- ...
(这是“空”项目的文件的 很多 )
如果有人能解释我所见的 绝大多数 ,那么我非常希望这样做:
.xcconfig
文件的全部用途是什么? (例如Pods-bfsdk_Example.debug.xcconfig
bfsdk-dummy.m
文件是什么?.modulemap
文件的全部内容是什么?-umbrella.h
文件是什么?-prefix.pch
文件是什么?bfsdk
项目和Pods
项目中?一个项目不应该是图书馆吗(因此不知道在何处实现该项目,例如在Example and Tests应用程序中?)尽管忽略了所有这些问题,但是我绝对需要帮助弄清楚一件事。在我的示例应用程序中,即在我的bfsdk/Example for bfsdk/BFViewController.m
文件中,我希望能够像这样导入我的库:
// Assuming I keep the file named "ReplaceMe" and use that as my class name:
#import <bfsdk/ReplaceMe.h>
@implementation BFViewController
- (void)viewDidLoad
{
[super viewDidLoad];
ReplaceMe *test = [[ReplaceMe alloc] init];
}
@end
这将模仿其他CocoaPods库的使用方式。例如,如果我要将AFNetworking包含在我的项目中,则可以将其包含在以下内容中:
// Directly specify the class I want to use
#import <AFNetworking/AFHTTPSessionManager.h>
// Or specify the entire library
#import <AFNetworking/AFNetworking.h>
但是,当我尝试以这种方式包括我的课程时,自动完成建议:
#import <bfsdk/bfsdk-umbrella.h>
尝试键入其他任何内容均不起作用。
所以我的问题是:如何在CocoaPods中将ReplaceMe.h
声明为公共标头,以便包括我的库在内的任何人都可以使用:
#import <bfsdk/bfsdk.h>
// or
#import <bfsdk/ReplaceMe.h>