【问题标题】:Reusing methods in multiple classes在多个类中重用方法
【发布时间】:2010-10-26 20:31:14
【问题描述】:

我刚刚在具有多个不同 UIViewControllers. 的应用程序中实现了 iAds 我在每个应用程序中都有 - (void)bannerViewDidLoadAd:(ADBannerView *)banner- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 的委托方法,用于显示和隐藏横幅,以及创建横幅的设置方法在viewDidLoad.

我通过让第一个 UIViewController 中的所有内容正常工作,然后将代码以及 ivar 声明、属性等复制到其他每个控制器来做到这一点...

这不可能。每次我改变一个,我都必须改变它们。我的问题(终于!)是:有没有办法一次编写这些方法,以便所有类都可以访问它们?

谢谢!

【问题讨论】:

    标签: objective-c ios code-reuse iad


    【解决方案1】:

    如果子类化没有意义,我建议创建一个 c 函数。

    如果这个函数伴随着其他相关函数,把它和它的亲戚放在一个库中。如果列表变得很长,那么类可能是更好的选择。

    如果这个函数是独立的并且特定于一个应用程序/项目,那么只需创建一个文件来声明所有这些奇怪的位(如果它们必须在多个翻译中重复使用)。如果 bits 文件非常大,则可能存在一些设计问题。

    有些人可能会推荐一个 objc 类别实例方法。我通常会避免分类,因为出错的可能性非常高。如果不引用 C 和 C++ 函数/类型,它们会被链接并轻松剥离。与类别,你不链接,它和方法中使用的符号不能被剥离。

    如果两者在概念上(或物理上)绑定,则可以将其作为单例的实例方法包含在内。否则,我建议将它们分开。

    【讨论】:

    • 您能详细说明一下吗? C 函数将驻留在哪里?我有一个单例对象来处理保存状态等 - C 函数(我希望至少有两个)可以在那里吗?我会传入adBanner 的实例来处理它吗?
    • 谢谢,贾斯汀。在开始使用 ObjC 之前,我从未做过任何 C/C++ 编程,所以我一直觉得我是从零开始。我从来没有听说过一个类别。我将尝试将这些方法放在他们自己的文件中,并将该文件导入每个视图控制器 - 请继续关注!
    猜你喜欢
    • 1970-01-01
    • 2013-07-10
    • 2014-08-18
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多