【发布时间】:2017-12-30 22:16:58
【问题描述】:
有什么区别:
NSRange(location: 0, length: 5)
和:
NSMakeRange(0, 5)
因为当我使用NSMakeRange 时Swiftlint 会抛出警告,但我不知道为什么。
感谢您的帮助:-)
【问题讨论】:
-
好吧,对于其中一个,我立即知道值 0 和 5 代表什么,而对
NSRange一无所知。
有什么区别:
NSRange(location: 0, length: 5)
和:
NSMakeRange(0, 5)
因为当我使用NSMakeRange 时Swiftlint 会抛出警告,但我不知道为什么。
感谢您的帮助:-)
【问题讨论】:
NSRange 一无所知。
它们之间的唯一区别是
NSRange(location: 0, length: 5)
是NSRange的初始化器,而
NSMakeRange(0, 5)
是一个创建一个新的NSRange 实例的函数(很可能通过在内部使用相同的初始化程序),实际上在Swift 中是多余的。 Swift 只是从 Objective-C 继承了它。我会坚持前者
【讨论】:
主要区别在于
NSRange(location: 0, length: 24)
是 Swift 和
中自动生成的结构初始化方法NSMakeRange(0, 24)
只是一个预定义的宏,用于设置位置和长度
NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}
一般来说,结果是一样的,但如果你是 Swift 使用第一个,如果你正在编写 ObjC 代码,使用第二个;)
【讨论】: