3

NSMakeRangeで負のlocを実行することは可能ですか?

NSString *string = @"abc";
NSString *myString = [string substringWithRange:NSMakeRange(-1, 1)];
4

2 に答える 2

10

いいえ。

locationlength符号なし整数です:

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

また、NSMakeRange関数は次のように定義されています。

NSRange NSMakeRange (
    NSUInteger loc,
    NSUInteger len
);
于 2012-02-21T10:31:16.093 に答える
0

はい、可能ですが、負の値は別の非常に大きな正の値に変換されるため、実際には意味がありません。

NSUInteger loc = -1; // equal to 4294967295

1.だから、あなたは非常に長い文字列を必要としています。
2.したがって、例を機能させるには、負の値を非常に大きな値に反転する必要があります

NSString *string = @"abc";
NSRange r1 = NSMakeRange(-NSUIntegerMax, 1);
NSString *myString = [string substringWithRange:r1];
NSLog(@"%@",myString);
于 2012-02-21T10:54:24.973 に答える