代码之家  ›  专栏  ›  技术社区  ›  Duck

iPhone-单独文件上的常规方法

  •  3
  • Duck  · 技术社区  · 15 年前

    我有几个类使用的方法。我的想法是将这些方法放在一个通用的单独文件中,并让其他类看到。

    在Xcode中我该怎么做?

    对不起,我是新来的iPhone开发人员。

    谢谢

    4 回复  |  直到 15 年前
        1
  •  2
  •   Alex Wayne    15 年前

    我有时有一个 Utility 我只为此定义类方法的类。任何我需要使用这些随机方法之一的地方,我只是 #import "Utility.h" [Utility doSomeHandyThing]

    您将使用此声明定义方法:

    +(BOOL)doSomeHandyThing;
    

    这个 + 允许您在不首先实例化类的情况下对类本身调用它,这对于快速访问不需要依赖于任何上下文的代码非常理想。

        2
  •  1
  •   Till    15 年前

    实现这一点有几种方法。这取决于这些类是什么,它们可能需要您所讨论的方法。换句话说,它取决于您需要的集成级别。例如,该方法是否需要处理封装在这些类中的数据。

    一种方法是使用实现特定方法的单例帮助器类。

    另一种方法是使用静态方法(squegy在他的答案中非常简单地起草了一些东西)的助手类。

    另一种方法是创建一个包含特定方法的基类,而所有其他需要此方法的类只需扩展该基类。让我为您起草这个:

    BaseClass.h:
    @interface BaseClass
    {
    };
    - someNiftyMethodWith:(NSString *)someCoolParameter;
    @end
    
    BaseClass.m:
    @implementation BaseClass
    - someNiftyMethodWith:(id)someCoolParameter
    {
        NSLog(@"yoy, that was easy to print %@ into the console", someCoolParamater);
    }
    @end
    
    ExtendingClass.h
    @interface ExtendingClass : BaseClass
    {
    };
    - someMethodThatNeedsHelp;
    @end
    
    ExtendingClass.m
    @implementation ExtendingClass
    - someMethodThatNeedsHelp
    {
        [self someNiftyMethodWith:@"called by the extending class"];
    }
    @end
    

    在使用目标C时,还有更多的方法来实现您可能需要的东西。注意类别、委托和协议。

    最后但同样重要的是,在这样的头文件中注册了一个普通的C函数,这是一个非常古老的解决方案:

    Helper.h:
    void OldSchoolHelperFunction(void) { printf("simple helper function"); };
    

    #import "Helper.h"
    
    @implemenation FooBar
    - someMethodThatNeedsHelp
    {
        OldSchoolHelperFunction();
    }
    
    @end
    
        3
  •  0
  •   Matt S.    15 年前

    只需创建一个具有这些方法的自定义类。 This 应该会帮你的。

        4
  •  0
  •   mbmcavoy    15 年前

    类之间需要有多少代码是公共的?在这种情况下,可能首先创建一个基类,然后为其他类继承它。