swift nsrange swiftlint

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;)