我是Objective-C的新手,并且大部分时间都在我的代码中使用NSRange
。
我刚才知道有NSMakeRange
。所以,我只是想知道 - NSMakeRange
的用途是什么?
答案 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
肯定会使您的代码更具可读性。