可以在所有其他类中使用的全局类

时间:2012-08-13 21:55:19

标签: cocoa-touch design-patterns

我已经在一个特定的视图控制器中成功地将iAds应用到我的应用程序中,并且我想将它们放在我的许多其他视图控制器中。对于每个视图控制器,为每个视图控制器重复写入相同的iAd代码似乎是多余的。我希望能够将iAds的所有代码放在一个类中,只要我需要它就可以调用它。所以我听说过称为辅助类和类方法(+)的东西,但我不确定这是否是我需要的。谁能引导我朝着正确的方向前进?一个例子会有所帮助。

修改

我创建了一个没有视图控制器的单例类,我认为没错。无论如何,在iAd实现中,有许多代码行包括添加子视图,例如

[self.view addSubview:adView]; 

单身人士告诉我它不会识别“视图”。因此,当我从其他视图控制器调用单例时,是否需要将视图传递给单例?谢谢

2 个答案:

答案 0 :(得分:1)

你想分享的是什么?从描述中,您听起来像是对重用实现最感兴趣(而不是各种全局数据/状态)。为此,您可以使用类的多个实例。

当然,您可能希望关注此类的界面,以便它与您必须使用它的视图和控制器良好地交互(以通用方式 - 特殊情况应保留在适当的控制器中)。

答案 1 :(得分:1)

你的新课程,iAd单身,确实没有观点;因此你无法从那里访问。

我建议您不要将视图控制器的视图传递给iAd类,而是让您的VC请求广告。像这样:

// SomeViewController
// Maybe this is viewDidLoad? It's wherever you are ready to 
// incorporate the ad into your view.
- (void) arrangeViewIncludingAds
{
    // Do other setup

    UIView * adView [[iAdSingleton sharedIAd] adWithParameters:infoToSelectAnAppropriateAdForThisVC];
    [self.view addSubview:adView];

    // Continue setup
}

我不确定您是否要更改每个VC的广告;我刚才补充说这是一个想法。