La seguridad de tipos en swift

implementos Swift la seguridad de tipos, que básicamente significa que no se puede utilizar una variable de manera inapropiada para los términos de su tipo. En otras palabras, de acuerdo con las normas de seguridad de tipos, se puede dividir por cero - que no es un error de tipo - pero no se puede realizar una operación aritmética con una cadena a menos que hacer algunas conversiones primero.

Tipo de seguridad se puede describir en una especificación de lenguaje y se hace cumplir en un entorno de desarrollo como Xcode- también se puede hacer cumplir con la programación cuidadosa. Eso es parte del problema: Sin la seguridad de tipos forzada, es muy fácil de poner y crear código no seguro.

En muchos entornos, código no seguro puede fallar la primera vez que se ejecuta - este es el mejor de los casos. Por desgracia, el escenario más común es que el código falla en varias ocasiones. A menudo, su fracaso tiene que ver con la memoria de su aplicación tiene que trabajar, por lo que el código no seguro puede fallar dependiendo de lo que otras aplicaciones o funciones se están ejecutando en ese momento.

Dejando que el entorno de desarrollo de hacer cumplir la seguridad de tipos es la forma más segura de manejar estos problemas. (Basándose en las buenas intenciones de las personas es, por desgracia, no siempre es la mejor elección.)

La especificación del lenguaje Swift describe su seguridad de tipos como parte del lenguaje de toda la especificación del lenguaje es impuesta por el compilador, así como por el entorno de desarrollo Xcode. En el uso común, sin embargo, la gente suele decir cosas como “Swift Aplica el tipo de seguridad.”

Video: iOS Swift Basics Tutorial: Protocols and Delegates

De hecho, Swift sólo proporciona la ESPECIFICACIÓN es Xcode y el compilador LLVM que hacer la aplicación. Sin embargo, a menos que haya una razón para hacer una distinción entre la especificación Swift y su aplicación en Xcode y el compilador, este libro se refiere de manera general a Swift.

Swift tiene dos enfoques para hacer cumplir la seguridad de tipos: el endurecimiento de las normas de codificación e inferir tipos. Utiliza otros enfoques también, pero estos son los más importantes.

Endurecimiento de las normas de codificación

Video: iOS Swift Tutorial: UITextView Tips and Tricks 12/24 ��

Existe desde hace tiempo una solución de compromiso (algunas personas lo llamarían una batalla) Entre las prácticas de codificación de estricta y suelta tipificación de variables. tipos de datos estrictos es más problemas, y puede causar errores de compilación como los objetos del compilador a variables de tipo vagamente. tipificación suelto es más simple de escribir e incurre en un menor número de errores de compilación, pero puede causar más errores de tiempo de ejecución y los accidentes.

Swift aprieta las normas de codificación. En gran medida, estas normas consisten en limitaciones lingüísticas que impiden código no seguro. Estas son algunas de las medidas de seguridad de tipo que Swift pone en su lugar y hace cumplir:

  • punteros: Punteros le permiten acceder directamente a la memoria, lo que puede dar lugar a todo tipo de problemas. La sintaxis básica de Objective-C para acceder a una instancia de una clase implica un puntero: Este no es el caso de Swift.

    Video: Swift 3: Twitter - Tweets String Formatting Tips And Tricks with NSAttributedString (Ep 9)

    Cuando se declara una instancia de una clase como UIView en Objective-C, lo hace con un código como UIView * myView. Ese asterisco indica que se está trabajando con un puntero (esto es viejo y simple sintaxis C). Si estás acostumbrado a Objective-C, la mayor parte de los asteriscos son historia para usted. La excepción es si usted está mezclando Objective-C y Swift.

  • inicialización: Las variables deben ser inicializadas en Swift antes de su uso. No hay manera de utilizar las variables sin inicializar en Swift.

  • Sin nula: En otros idiomas, nulo a menudo se utiliza para proporcionar un valor que se puede probar para ver si existe un objeto. En este Swift se maneja con tipos opcionales.

  • Gestión de la memoria y la comprobación de desbordamiento: Swift ha heredado características de Objective-C implementados con comportamientos de compilación avanzadas, tales como la cuenta automática de referencia (ARC).

inferencia de tipos

Debido Swift requiere variables (y constantes) para ser inicializadas antes de ser utilizado, la biblioteca de tiempo de ejecución compilador y siempre tienen un valor para cada variable. A partir de este valor, Swift se puede inferir un tipo sin tener que especificarlo. En otras palabras, se puede especificar el tipo de cualquier variable, pero no tiene que hacerlo si esa variable se inicializa con un valor a partir del cual Swift puede inferir el tipo.

Arrays y diccionarios en Swift deben contener instancias del mismo tipo. Por lo tanto, cuando se crea una matriz o diccionario, debe especificar explícitamente su tipo o proporcionar valores iniciales para que Swift puede inferir el tipo de la matriz o diccionario. En cualquier caso, Swift puede determinar el tipo de los valores de la matriz o diccionario.

Cuando se trata de clases y subclases, es posible que desee utilizar un tipo explícito. Si la matriz o diccionario finalmente se van a contener instancias de las subclases de una clase dada, es posible que inicializarlo con varias de estas subclases.

Por ejemplo, una matriz que contendrá diversas instancias de UIView subclases pueden inicializarse con uno o más UILabel instancias. Sin embargo, no hay manera de Swift podría inferir UIView de instancias que no incluyen todos los posibles UIView subclases. Así que si usted es consciente de que usted desee agregar (por ejemplo) UIButton casos más adelante, es posible que prefiera para escribir explícitamente la matriz como UIView así que toda la UIView instancias de las subclases son bienvenidos.

Artículos Relacionados