2016-02-11 12 views
8

私はPODプロジェクトを初めて利用しています。 PodプロジェクトのviewControllersを更新したいのですが、PodプロジェクトのAppDelegateクラスにアクセスする必要があります。PodプロジェクトのViewControllerでAppDelegate.hファイルをインポートするには?

私はAppDelegateにアクセスするためにPod設定ファイルを更新しようとしましたが、成功することはできませんでした。

+0

なぜあなたはそれを望んでいますか?あなたがすべき理想的なものではありません。 –

+0

プロジェクトクラスをポッドプロジェクトに使用する代わりに、プロジェクトにポッドクラスを使用します。 podクラスのインスタンスを作成し、 'AppDelegate'クラスから何かを更新します。また、あなたの要件についてもっと説明してください。あなたの要件を達成するためのより良い、簡単な方法があるかもしれないと思います。 – TheTiger

+0

返信いただきありがとうございますが、私の 'AppDelegate'配列オブジェクトをpodプロジェクトクラスにアクセスしたいのですが、私たちがどんなpodクラスにもアクセスすると、' AppDelegate'配列オブジェクトを使って更新することを意味します。 – Swapnil1156035

答えて

1

実際には、アプリとポッドの間に循環依存関係を作成したくありません。これを行うための推奨される方法は、ポッドにプロトコルを定義し、そのプロトコルをAppDelegateに実装させることです。

@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]; 

上記の構造のようなものはうまくいくはずですが、私はあなたにこのアーキテクチャを再考するよう促します。ポッドはアプリの依存関係であり、アプリについて何も知ってはいけません。アプリはそれが知る必要があるすべてのポッドを伝える必要があります。

関連する問題