// NSRange 的结构体
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
NSRange theRange = NSMakeRange(2, 4);
NSUInteger loc = theRange.location; // 起始位置
NSUInteger len = theRange.length; // 长度
// NSRange 的指针 啥用子类?没用过,求告知
typedefNSRange *NSRangePointer;
????
// 创建 NSRange
NS_INLINENSRange NSMakeRange(NSUInteger loc,NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}
NSRange theRange = NSMakeRange(2, 4);
// 最大值
NS_INLINENSUInteger NSMaxRange(NSRange range) {
return (range.location + range.length);
}
NSRange theRange = NSMakeRange(2, 4);
NSUInteger six = NSMaxRange(theRange);<span style="white-space:pre"> </span>
// 判断位置是否在 范围内
NS_INLINEBOOL NSLocationInRange(NSUInteger loc,NSRange range) {
return (!(loc < range.location) && (loc - range.location) < range.length) ?YES : NO;
}
if (NSLocationInRange(3, NSMakeRange(1, 4))) {
NSLog(@"yes");
}
// 判断2个范围是否完全一致
NS_INLINEBOOL NSEqualRanges(NSRange range1,NSRange range2) {
return (range1.location == range2.location && range1.length == range2.length);
}
if (NSEqualRanges(NSMakeRange(1, 2), NSMakeRange(2, 3))) {
NSLog(@"yes");
}
FOUNDATION_EXPORTNSRange NSUnionRange(NSRange range1,NSRange range2);// 并集
FOUNDATION_EXPORTNSRange NSIntersectionRange(NSRange range1,NSRange range2);// 交集
FOUNDATION_EXPORTNSString *NSStringFromRange(NSRange range);// 范围转字符串
FOUNDATION_EXPORTNSRange NSRangeFromString(NSString *aString);// 字符串转范围
NSRange range1 = NSMakeRange(1, 5);<span style="white-space:pre"> </span>12345
NSRange range2 = NSMakeRange(3, 5);<span style="white-space:pre"> </span>34567
NSRange unionRange = NSUnionRange(range1, range2);<span style="white-space:pre"> </span>1234567
NSRange intersectionRange = NSIntersectionRange(range1, range2);<span style="white-space:pre"> </span>345
NSString *rangeStr = NSStringFromRange(range1);<span style="white-space:pre"> </span>{1,5}
NSLog(@"%@",rangeStr);
NSRange strRange = NSRangeFromString(@"{1,4}");
@interface NSValue (NSValueRangeExtensions)
+ (NSValue *)valueWithRange:(NSRange)range;// 通过范围创建NSValue
@property (readonly)NSRange rangeValue;
@end