1

我一直在构建一个 iOS 应用程序,我的一个 ViewController 已经变得充满了如下功能:

CGPoint randomPoint()
{
  //Code goes here
}

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

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

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

我怎样才能做到这一点?

4

2 回答 2

3

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

确保为函数提供描述性名称,例如:

static inline CGPoint CGPointMakeRandom() {
    // your code
    return point;
}
于 2012-09-04T17:38:01.443 回答
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] 告诉您为什么要调用该方法以及它在做什么。您正在使用一个具有点实用程序的类,并且您正在使用它来抓取一个随机点。您不需要对象来调用此方法,因为它是由类抽象控制的。请注意不要尝试在类方法中访问类的属性。

于 2012-09-04T17:39:09.787 回答