0

我正在尝试尽可能地将 iAd 初始化代码与主 UIViewController 隔离开来,以便将来轻松集成我的应用程序。我创建了 AdManager (NSObject) 类来处理 iAd 设置和初始化。但是,我不知道如何为实现这些委托类的 UIViewController 之外的对象设置委托。例如:

@interface AppViewController : UIViewController<ADBannerViewDelegate>

我的 AdManager 会有这样的东西:

+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController*)vc{
  ADBannerView *iAdBannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, -bannerSize.height, bannerSize.width, bannerSize.height)];
  iAdBannerView.delegate = vc;  
  [view addSubview:iAdBannerView];

错误(警告)消息是:从不兼容的类型“UIViewController”分配给“id”

我可能对代表的这种特殊情况不太好,所以请原谅我可能的误解,但是否有可能以类似的方式实现我所需要的?如何?

4

1 回答 1

1

您将vc参数定义为UIViewController *. 这意味着您可以在其中传递任何旧视图控制器,不一定是符合ADBannerViewDelegate协议的视图控制器。您应该定义vc参数,以便您只能将符合该协议的视图控制器传递到:

+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController<ADBannerViewDelegate>*)vc{
于 2012-04-23T22:20:46.780 回答