Objective-C中NSMakeRange的用途是什么?

时间:2014-04-29 06:34:05

标签: objective-c

我是Objective-C的新手,并且大部分时间都在我的代码中使用NSRange

我刚才知道有NSMakeRange。所以,我只是想知道 - NSMakeRange的用途是什么?

5 个答案:

答案 0 :(得分:5)

这是一个方便的内嵌功能,用于创建NSRange struct,填充并返回它:

(来自.../Foundation.framework/Headers/NSRange.h

NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
    NSRange r;
    r.location = loc;
    r.length = len;
    return r;
}

创建范围变得更简单;比较:

unichar buffer[8];
[someString getCharacters:buffer range:NSMakeRange(2, 8)];

为:

unichar buffer[8];
NSRange range = { 2, 8 };
[someString getCharacters:buffer range:range];

答案 1 :(得分:3)

它只是一个便利功能。它允许你替换它:

NSRange r;
r.location = 1;
r.length = 2;
DoSomething(r);

用这个:

DoSomething(NSMakeRange(1, 2));

答案 2 :(得分:1)

NSMakeRange(5, 1)创建一个位置为5且长度为1的范围。有关详细信息和相关功能,请参阅documentation

在Xcode中按住Alt键单击功能名称,您将获得参考。

答案 3 :(得分:0)

嗯,这是使用指定的两个值来制作范围。一些Objective-C API将要求您使用它。

答案 4 :(得分:0)

来自Apple的documentation

  

用于描述系列的一部分的结构 - 例如字符   在一个或多个NSArray对象中的对象。

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

创建NSRange对象有很多种方法,

1 - 使用NSMakeRange

NSRange range = NSMakeRange(10, 50);

2 - 在{}

中指定
NSRange range = {10,50};

3 - 按属性

NSRange range;
range.location = 10;
range.length = 50;

使用“赢”不会产生太大影响,但使用NSMakeRange肯定会使您的代码更具可读性。