NSRange和NSMakeRange之间的区别

时间:2017-06-13 13:14:42

标签: swift nsrange swiftlint

之间有什么区别:

NSRange(location: 0, length: 5)

NSMakeRange(0, 5)

因为Swiftlint在我使用NSMakeRange时会发出警告,但我不知道为什么。

感谢您的帮助:-)

2 个答案:

答案 0 :(得分:29)

他们之间的唯一区别是

NSRange(location: 0, length: 5)

NSRange的初始化程序,而

NSMakeRange(0, 5)

是一个创建新NSRange实例的函数(最有可能使用相同的初始值设定项),实际上在Swift中是多余的。 Swift只是从Objective-C继承了它。我会坚持前者

答案 1 :(得分:0)

主要区别在于

NSRange(location: 0, length: 24) 

是Swift和

中自动生成的struct init方法
NSMakeRange(0, 24) 

只是预定义的宏,用于设置位置和长度

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

通常,结果是相同的,但是如果您使用Swift,请使用第一个;如果您正在编写ObjC代码,请使用第二个;)