Red de conocimiento informático - Problemas con los teléfonos móviles - Lanzamiento de Xcode 7 beta, nuevas características en Swift 2.0

Lanzamiento de Xcode 7 beta, nuevas características en Swift 2.0

Actualizaciones para Swift 2.0 y Objective-C

Manejo de errores: podemos crear una función en Swift para generar, detectar y administrar errores. Podemos tocar y manejar errores recuperables como "archivo no encontrado" o tiempos de espera de red, y Swift y el manejo de errores pueden interactuar sin problemas con NSError.

Comprobación de disponibilidad: si llama a una API introducida en una nueva versión del sistema en una plataforma de implementación antigua, se activará un error en tiempo de compilación. Podemos usar la función #available() en una declaración condicional if o guard para verificar la disponibilidad de las funciones API: por ejemplo,

if#available(iOS8.0, OSX10.10, *){

//Utilice HandoffAPI al hacer coincidir versiones. letactivity=

NSUserActivity(activityType: "com.example.ShoppingList.view")

activity.becomeCurrent()

}else{

//Devuelto cuando la versión no coincide.

}

Puede especificar información de disponibilidad en una declaración de código utilizando la declaración de atributo @available(). Por ejemplo:

@available(iOS8.0, OSX10.10, *)

funcstartUserActivity()-gt; NSUserActivity{

...

}

El método startUserActivity() solo está disponible para iOS 8.0 y superior, OSX 10.10 y superior, y la versión completa de otras plataformas.

Extensibilidad de protocolo: ahora es posible escribir extensiones para tipos de protocolo de modo que podamos agregar métodos o propiedades a cualquier clase que siga el protocolo, reutilizando así en gran medida nuestro código.

Implementación predeterminada del protocolo: ahora se pueden proporcionar implementaciones predeterminadas para los requisitos especificados en las extensiones del protocolo, lo que permite el uso de patrones como "mixin" y "trait".

Nueva declaración de retraso: esta declaración se usa para limpiar al final del ciclo de vida del código. Esta característica es muy útil cuando se usa el nuevo modelo de manejo de errores en el desarrollo concurrente. Por ejemplo:

letf=fopen("x.txt", "r")

defer{fclose(f)}

tryfoo(f)/ / Si ocurre un error, f se cerrará.

letf2=fopen("y.txt", "r")

defer{fclose(f2)}

trybar(f, f2)// Si ocurre un error, f2 se cierra, seguido de f.

}//f2 se cierra, si no ocurre ningún error, f se cierra.

Nueva sintaxis de protección: la nueva sintaxis le permite construir un punto de salida temprana en un bucle de código. Por ejemplo:

guardletz=bar()else{return}

La declaración else aquí se usa para salir del bloque de código (similar a devolver, lanzar, romper, continuar, etc. ), o terminar Llame a la función modificada por el atributo @noreturn.

Coincidencia de patrones mejorada: en muchas declaraciones nuevas de control de flujo condicional, incluidas if/case, while/case, guard/case y for-in/case, for/in, y el uso permitido de " Where " Ahora se puede utilizar la coincidencia de patrones de interruptor/carcasa.

Nueva declaración do: la declaración do admite el anidamiento de bloques de código, por ejemplo:

do{

//newscope

do{

//otro ámbito

}

}

Probabilidad: la capacidad de prueba del marco Swift 2.0 y las pruebas de aplicaciones eliminan la necesidad de pruebas internas. código funcional que se enrutará al código público. El uso de la sintaxis @testable import {ModuleName} en el código que se va a probar hace que todo el código público y privado interno esté disponible para el destino de la aplicación o marco que debe compilarse con la configuración "habilitar capacidad de prueba" en el momento de la compilación. La propiedad de compilación "Habilitar capacidad de prueba" solo está disponible en una configuración de depuración porque requiere que se exporte la información de los símbolos internos, lo que impide la optimización del código.

Compatibilidad con punteros de función C: las funciones C que toman punteros de función como argumentos use Cierre o llamada de función global, esta restricción evita que el cierre capture su contexto. Por ejemplo, el proceso de llamada de la función qsort de la biblioteca C estándar es el siguiente:

varray=

. qsort(amp; array, array.count, sizeofValue(array[0])){a, bin

returnInt32(UnsafePointerlt;Intgt; (a).memory - UnsafePointerlt;Intgt; (b).memory )