ios - 如何在Pod项目ViewController中导入AppDelegate.h文件?

标签 ios objective-c iphone xcode7 cocoapods

我是 POD 项目的新手。 我想更新 pod 项目 viewControllers,为此我需要访问 Pod 项目中的 AppDelegate 类。

我已尝试更新 Pod 配置文件以访问 AppDelegate,但未能成功。

最佳答案

您真的不想在您的应用程序和 pod 之间创建循环依赖关系。推荐的方法是在 pod 中定义一个协议(protocol)并让您的 AppDelegate 实现该协议(protocol)。

@protocol PodArrayProvider
    - (NSArray *)arrayToAccess:
@end

// in AppDelegate.m
#import <Pod/Pod.h>

@extension AppDelegate () <PodArrayProvider>
@end

@implementation AppDelegate
- (NSArray *)arrayToAccess
{
    return self.realArray;
}
@end

// then in your pod, you can do:
id<PodArrayProvider> arrayProvider = (id<PodArrayProvider>)[[UIApplication sharedApplication] delegate];
NSAssert([arrayProvider conformsTo:@protocol(PodArrayProvider)], @"bad app delegate!");
NSArray *things = [arrayProvider arrayToAccess];

类似于上面的结构应该可以工作,但我建议您重新考虑这种架构。 pod 是应用程序的依赖项,不应该知道有关应用程序的任何信息。该应用程序应该告诉 pod 它需要知道的一切。

关于ios - 如何在Pod项目ViewController中导入AppDelegate.h文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35331139/

相关文章:

ios - Xcode iOS 模板

objective-c - 从 CVImageBufferRef 获取内存所有权

IOS,在 UIScrollView 内的 UILabel 上设置手势点击

iOS 7 : UITabBarItem image crops at bottom

iphone - iPhone应用程序的openframeworks库问题仅Mac应用程序不存在

ios - 在创建另一个 UIView 之前删除之前的 UIView

objective-c - UITextField 中的彩色子串

objective-c - 转换NSDate

ios - 让 iOS 在特定时间唤醒我的应用程序

iphone - 是否可以抑制特定任务的编译器警告?