Есть ли разница между:
NSRange(location: 0, length: 5)
а также:
NSMakeRange(0, 5)
Потому что Swiftlint
выдает предупреждение, когда я использую NSMakeRange
, но я не знаю почему.
Спасибо за помощь :-)
Есть ли разница между:
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 и
NSMakeRange(0, 24)
это просто предопределенный макрос, который устанавливает местоположение и длину
NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}
В общем, результат тот же, но если вы Swift, используйте первый, а если вы пишете код ObjC, используйте второй;)
NSRange
. - person Hamish   schedule 13.06.2017