【问题标题】:Difference between NSRange and NSMakeRangeNSRange 和 NSMakeRange 的区别
【发布时间】:2017-12-30 22:16:58
【问题描述】:

有什么区别:

NSRange(location: 0, length: 5)

和:

NSMakeRange(0, 5)

因为当我使用NSMakeRangeSwiftlint 会抛出警告,但我不知道为什么。

感谢您的帮助:-)

【问题讨论】:

  • 好吧,对于其中一个,我立即知道值 0 和 5 代表什么,而对 NSRange 一无所知。

标签: swift nsrange swiftlint


【解决方案1】:

它们之间的唯一区别是

NSRange(location: 0, length: 5)

NSRange的初始化器,而

NSMakeRange(0, 5)

是一个创建一个新的NSRange 实例的函数(很可能通过在内部使用相同的初始化程序),实际上在Swift 中是多余的。 Swift 只是从 Objective-C 继承了它。我会坚持前者

【讨论】:

    【解决方案2】:

    主要区别在于

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

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 2014-09-25
      • 2013-08-07
      • 2011-10-20
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多