Naprawdę nie chcesz tworzyć cyklicznej zależności między aplikacją a banerem. Zalecanym sposobem jest zdefiniowanie protokołu w bloku i sprawdzenie, czy AppDelegate implementuje ten protokół.
@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];
Coś jak powyższa struktura powinna zadziałać, ale chciałbym zachęcić do ponownego przemyślenia tej architektury. Pakiet jest zależny od aplikacji i nie powinien nic wiedzieć o aplikacji. Aplikacja powinna podpowiadać podajnikowi wszystko, co musi wiedzieć.
Dlaczego tego chcesz? To nie są idealne rzeczy, które powinieneś zrobić. –
Zamiast korzystać z klas projektu w projekcie pod użyć klas pod w projekcie. Utwórz instancję klasy pod i zaktualizuj wszystko z klasy 'AppDelegate'. Wyjaśnij także więcej o swoim wymaganiu Myślę, że może istnieć lepszy i łatwiejszy sposób spełnienia Twoich wymagań. – TheTiger
Dziękuję za odpowiedź, ale chcę uzyskać dostęp do mojego obiektu tablicy 'AppDelegate' w celu utworzenia klas projektu, co oznacza, że dostęp do każdej klasy strąków zostanie zaktualizowany za pomocą obiektu tablicy' AppDelegate'. – Swapnil1156035