4

一部のメソッドでは、値の範囲 (235 から 245 まで) を返すようにします。NSRange戻り値として使用してこれを行いました

- (NSRange)giveMeARangeForMyParameter:(NSString *)myParameter;

integerこれは、戻り値が範囲 (例: 位置: 235、長さ: 10) である限り問題なく機能します。

しかし、範囲を返す必要があるという問題がありfloatます (例: 位置: 500.5、長さ: 0.4)。typedefed struct であるドキュメントを読みました. 範囲の別の構造体を型定義することは可能ですか? もしそうなら、それらの範囲を作成するための同様の方法はありますか?NSRangeNSUIntegersfloatNSMakeRange(NSUInteger loc, NSUInteger len)float

4

4 に答える 4

8

グラフィックス ライブラリからいくつかの「ペア オブジェクト」の 1 つを再利用することもできますが (CGPointまたはCGSize、またはそれらにNS...相当するものから選択できます)、structこれらのオブジェクトの背後にある は非常に単純であるため、独自に作成することをお勧めします。

typedef struct FPRange {
    float location;
    float length;
} FPRange;

FPRange FPRangeMake(float _location, float _length) {
    FPRange res;
    res.location = _location;
    res.length = _length;
    return res;
}
于 2013-07-25T15:30:04.953 に答える
1

NSRangeはい、そしての定義を見に行くこともできますNSMakeRange(XcodeNSRange.hで名前を「コマンドクリック」するのが最も簡単な方法です)。NSRange

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
    NSRange r;
    r.location = loc;
    r.length = len;
    return r;
}
于 2013-07-25T15:29:55.500 に答える
0

2 つのフロートを持つ既存の構造体が必要で、GLKit を含めてもかまわない場合は、GLKVector2 を使用できます。Make機能もあります。

于 2014-05-18T09:42:03.560 に答える