Я никогда раньше не занимался разработкой для iOS и никогда не работал с CocoaPods (как потребитель или как автор) - но я быстро учусь, поэтому могу собрать библиотеку для своей компании.
Я запустил новый проект Objective-C, используя pod lib create
(это должен быть Objective-C по деловым причинам), и приступил к выяснению вещей.
Теперь я пытаюсь выяснить, каксделать мои библиотечные классы импортируемыми кем-то, использующим мой модуль.У меня есть следующая структура папок в 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
?Разве один проект не должен быть библиотекой (и, следовательно, не знать, где он реализуется, например, в приложениях «Пример» и «Тесты»?)
Игнорирование всех этих вопросов, хотя есть одинТо, что мне определенно нужна помощь в выяснении.В моем примере приложения, а именно в моем файле 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>
Попытка набрать что-то еще не работает.
Поэтому мой вопрос: как мне объявить ReplaceMe.h
как открытый заголовок в CocoaPods, чтобы любой, включая мою библиотеку, мог использовать:
#import <bfsdk/bfsdk.h>
// or
#import <bfsdk/ReplaceMe.h>