之间有什么区别:
NSRange(location: 0, length: 5)
和
NSMakeRange(0, 5)
因为Swiftlint
在我使用NSMakeRange
时会发出警告,但我不知道为什么。
感谢您的帮助:-)
答案 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代码,请使用第二个;)