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

在Objective-C iPhone中共享静态功能?

  •  1
  • Slee  · 技术社区  · 15 年前

    我需要根据一些业务规则从定价中进行计算,我不想在多个视图控制器之间复制此内容。来自.NET世界,我将在类上使用一个静态方法来实现这一点。在目标C中,类似的解决方案是什么?

    2 回复  |  直到 15 年前
        1
  •  3
  •   JosephH    15 年前

    最可能的一种类方法,即在开始时用+声明的接口中的函数。

    @implementation PriceCalculator
    
    + (float)calculatePrice:(float)param1 {
        return param1*4.0;
    }
    
    @end
    

    (以及头文件中类似的@interface)

    就是这样说的:

    price = [PriceCalculator calculatePrice:3.0];
    
        2
  •  1
  •   jlehr    15 年前

    如果你不需要重写子类中的行为,你可以写一个C函数,它相当于爪哇和C语言中的静态方法。否则,按照约瑟夫的建议做,并编写一个类方法。下面是他重写为C函数的示例:

    float calculatePrice(float amount)
    {
        return amount * 4.0;
    }
    

    如果方便的话,可以在某个类的.h/.m对文件中声明/实现该函数,但如果愿意,也可以创建一个单独的.h/.m对,它只包含C函数。