NSRange 和 NSMakeRange 的区别

Difference between NSRange and NSMakeRange

有什么区别吗:

NSRange(location: 0, length: 5)

和:

NSMakeRange(0, 5)

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

感谢您的帮助:-)

它们之间唯一的区别是

NSRange(location: 0, length: 5)

NSRange 的初始值设定项,而

NSMakeRange(0, 5)

是一个创建新 NSRange 实例的函数(很可能通过在内部使用相同的初始值设定项)并且实际上在 Swift 中是多余的。 Swift 只是继承自 Objective-C。我会坚持前者

主要区别在于

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 代码,则使用第二个 ;)