Iphone 获取当前活动的UIWindow/appDelegate对象而不保留应用程序对象

Iphone 获取当前活动的UIWindow/appDelegate对象而不保留应用程序对象,iphone,objective-c,Iphone,Objective C,我正在写一个“黑盒”库。在此库中,我需要向使用我的库的任何应用程序添加子视图。 因此,我既没有对appDelegate的任何引用,也没有对应用程序的UIWindow的任何引用。 外部应用程序现在正在做的唯一事情是: myRec = [[Rec alloc] init]; myRec.delegate = self; [myRec start]; 其中Rec是blackbox库,myRec是外部应用程序使用的实例。 当然,我无法通过代理成员获取对应用程序视图的任何引用,因为它的定义与外部应用程序

我正在写一个“黑盒”库。在此库中,我需要向使用我的库的任何应用程序添加子视图。
因此,我既没有对appDelegate的任何引用,也没有对应用程序的UIWindow的任何引用。
外部应用程序现在正在做的唯一事情是:

myRec = [[Rec alloc] init];
myRec.delegate = self;
[myRec start];
其中Rec是blackbox库,myRec是外部应用程序使用的实例。
当然,我无法通过代理成员获取对应用程序视图的任何引用,因为它的定义与外部应用程序的特定类型不同。

关于如何在事先不知道UIWindow对象/appDelegate对象的身份的情况下掌握它们的任何想法???

谢谢

[[UIApplication sharedApplication] delegate]
将始终返回符合
id


顺便说一句,这是正确的方法,创建应用程序中某个类应该遵守的协议(即appDelegate),并将该类传递给库。您可以检查类库是否完全符合协议,如果不符合协议,则在日志中显示消息以失败

获取应用程序代理:

id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];

@phix23用Swift 3回答:

if let appDelegate = UIApplication.shared.delegate, let window = appDelegate.window {
    let yourview = window?.rootViewController?.view
}
if let appDelegate = UIApplication.shared.delegate, let window = appDelegate.window {
    let yourview = window?.rootViewController?.view
}