swift - Diferencia entre NSRange y NSMakeRange
swiftlint (2)
¿Hay alguna diferencia entre:
NSRange(location: 0, length: 5)
y:
NSMakeRange(0, 5)
Porque Swiftlint
lanza una advertencia cuando uso NSMakeRange
, pero no sé por qué.
Gracias por la ayuda :-)
La única diferencia entre ellos es que
NSRange(location: 0, length: 5)
es un inicializador para NSRange
mientras
NSMakeRange(0, 5)
es una función que crea una nueva instancia de NSRange
(usando el mismo inicializador dentro de lo más probable) y en realidad es redundante en Swift
. Swift
simplemente lo ha heredado de Objective-C
. Me quedaría con el anterior
La principal diferencia es que
NSRange(location: 0, length: 24)
Se genera automáticamente el método struct init en Swift y
NSMakeRange(0, 24)
es solo una macro predefinida que establece la ubicación y la longitud
NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}
En general, el resultado es el mismo, pero si usa Swift el primero y si escribe el código ObjC use el segundo;)