Разница между NSRange и NSMakeRange
Есть ли разница между:
NSRange(location: 0, length: 5)
а также:
NSMakeRange(0, 5)
Поскольку Swiftlint
предупреждает, когда я использую NSMakeRange
, но я не знаю почему.
Спасибо за помощь :-)
Ответы
Ответ 1
Единственное различие между ними состоит в том, что
NSRange(location: 0, length: 5)
является конструктором для NSRange
, а
NSMakeRange(0, 5)
- это функция, которая создает новый экземпляр NSRange
(наиболее вероятно, используя тот же самый конструктор), и на самом деле является избыточным в Swift
, я думаю. Swift
просто унаследовал его от Objective-C
. Я бы придерживался прежнего
Ответ 2
Основное различие заключается в том, что
NSRange(location: 0, length: 24)
является автоматически сгенерированным методом struct init в Swift и
NSMakeRange(0, 24)
это только предопределенный макрос, который устанавливает местоположение и длину
NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}
В общем, результат один и тот же, но если вы используете Swift, первый и если вы пишете код ObjC, используйте второй;)