之间有什么区别:
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代码使用第二个;)