如何将公共头文件声明为CocoaPod作者?

时间:2019-07-01 20:28:30

标签: ios objective-c xcode cocoapods

我以前从未真正从事过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
|||- ...

(这是“空”项目的文件的 很多

如果有人能解释我所见的 绝大多数 ,那么我非常希望这样做:

  • 为什么CoreGraphics和UIKit包含在一个空项目中?
  • .xcconfig文件的全部用途是什么? (例如Pods-bfsdk_Example.debug.xcconfig
  • bfsdk-dummy.m文件是什么?
  • .modulemap文件的全部内容是什么?
  • -umbrella.h文件是什么?
  • -prefix.pch文件是什么?
  • 为什么在一个空项目中包括MobileCoreServices,Security和SystemConfiguration?
  • 为什么“示例”和“测试”内容同时出现在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>

0 个答案:

没有答案