1

私はiOSアプリを構築していて、ViewControllerの1つが次のような機能でいっぱいになりました。

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

クラスメソッドを使用して、別のObjectiveCクラスを作成できます。

ヘッダーファイルで、このようなメソッドを宣言します(たとえば、呼び出したいとします)

#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 に答える