Как объявить общедоступные заголовочные файлы автором CocoaPod? - PullRequest
0 голосов
/ 01 июля 2019

Я никогда раньше не занимался разработкой для 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...