将函数移动到单独的类

时间:2012-09-04 17:27:02

标签: objective-c ios xcode

我一直在构建iOS应用程序,其中一个ViewControllers已经充满了以下功能:

CGPoint randomPoint()
{
  //Code goes here
}

我现在想将它们移到A类(或协议,我不确定什么对我有用),在VC中导入它并像以前一样调用它:

p=randomPoint(); //NOT A.randomPoint(), [A randomPoint] or whatever

我尝试使用C ++类模板,但它在CGPoint,CGRect等方面存在问题。

我该如何实现?

2 个答案:

答案 0 :(得分:3)

如果您想知道将C函数放在您所描述的函数中,最佳做法是将它们移动到具有有意义名称的单独.h文件中。例如MyGeometry.h

确保为您的函数指定一个描述性名称,例如:

static inline CGPoint CGPointMakeRandom() {
    // your code
    return point;
}

答案 1 :(得分:0)

您可以使用类方法创建单独的目标c类。

在头文件中声明这样的方法(假设你要调用它

#import <UIKit/UIKit.h>

@interface pointHelper : UIViewController

     +(CGPoint) randomPoint;

然后在.m文件中

 @implementation pointHelper
     +(CGPoint) randomPoint{
         //// implementation
     }

当你想在另一个文件中唤起该方法时。

#import "pointerHelper.h"

然后您就可以访问这样的方法......

CGPoint thePoint = [pointHelper randomPoint];

或者如果你有一个类的对象..

CGPoint thePoint = [[pointHelperObject class] randomPoint];

这是一种更好的方法,因为它使您的代码更清晰。 [pointHelper randomPoint]告诉你为什么要唤起方法以及它正在做什么。您正在使用具有点的实用程序的类,并且您正在使用它来获取随机点。你不需要一个对象来唤起这个方法,因为它是由类抽象地控制的。请注意不要尝试在类方法中访问类的属性。