La comparación de los marcos en objective-c y rápida

La plantilla de aplicación Maestro-Detalle utiliza un controlador de vista dividida en algunos casos y un controlador de navegación en otros. Originalmente (es decir, con el lanzamiento del iPad), el controlador de vista dividida estaba destinado para el iPad, y el controlador de navegación fue pensado para iPhone. En 2014, con la llegada del iPhone 6 Plus, la aplicación ha cambiado.

Video: iOS Tutorial - Part 21 - UIGestureRecognizer

El controlador de vista dividida ahora se utiliza para dispositivos de pantalla más grande y el control de navegación se utiliza para dispositivos de pantalla más pequeña. La línea divisoria ya no es iPad vs iPhone: Se inicia ahora con el iPhone 6 Plus, que utiliza un controlador de vista dividida junto con el iPad. Otros modelos de iPhone utilizan el controlador de navegación.

Esto ha provocado una revisión del código, por lo que incluso si usted ha utilizado durante años, usted debe tomar un vistazo al código en esta sección en ambos idiomas.

El controlador de la vista dividida está configurado en AppDelegate (AppDelegate.swift o la combinación de AppDelegate.h y AppDelegate.m en Objective-C). Aquí, se ve la Declaración y la aplicación tanto en Swift y Objective-C. Como se ha señalado, se encontrará con este enfoque en varias ocasiones con los marcos heredados de Objective-C.

Identificar el método de clave

La clave para el controlador de vista dividida es un protocolo - UISplitViewControllerDelegate. Dentro de ese protocolo, uno de los métodos más importantes es la que logra colapsar el controlador de vista secundaria (la lista maestra, en la mayoría de los casos). Incluso el nombre de este método es diferente en los dos idiomas. En la barra de salto, así es como se identifica en Swift:

Video: iOS Programming Course 2012 - Lecture 1 iOS (Objective-C Primer)

splitViewController (_: collapseSecondaryViewController: ontoPrimaryViewController)

Así es como se identifica en la barra de salto en Objective-C:

-splitViewController: collapseSecondaryViewController: ontoPrimaryViewController:

Video: Steve Jobs presents - OpenStep's Interface builder

El primer punto a notar es que en Objective-C, el - al principio identifica esto como un método de instancia en lugar de un método de clase. Esto se puede hacer en Swift, pero sólo de una manera diferente. El nombre del método en Swift no refleja su clase- o instancia-dad.

Tenga en cuenta que en la documentación, la versión de Objective-C está en la lista por el título. Después de eso, se muestra la Swift y las interfaces de Objective-C (en ese orden). Este patrón parece ser utilizada en todos los marcos.

La comparación de las declaraciones

Las declaraciones reales de estos métodos se muestran aquí. En primer lugar Swift:

splitViewController func opcional (_ splitViewController: UISplitViewController, collapseSecondaryViewControllersecondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) - gt;! bool

A continuación, la declaración de Objective-C:

- (BOOL) splitViewController: (UISplitViewController *)splitViewControllercollapseSecondaryViewController: (UIViewController *)secondaryViewControllerontoPrimaryViewController: (UIViewController *) primaryViewController

Ahora que usted está buscando en el código real, se puede ver que hay más diferencias que sólo el - que marca esto como un método de instancia en Objective-C. Estas son las principales diferencias:

  • En Objective-C, el resultado de retorno se muestra entre paréntesis al principio de la función, como en

    - (BOOL) splitViewController:
  • En Swift, el resultado de retorno se muestra en la parte final de la función, como en

    -gt; bool
  • En Objective-C, los parámetros (excepto el primero) se muestran en este orden: nombre externo, colon, tipo (en paréntesis y asterisco), nombre interno, como en

    collapseSecondaryViewController: (UIViewController *)secondaryViewController 
  • En Swift, los parámetros (incluyendo el primero) se muestran en un orden diferente: nombre externo, nombre interno, colon, tipo, como en

     collapseSecondaryViewController secondaryViewController: UIViewController!
  • Tipos en Swift pueden incluir ! y ? como operadores de sufijo para indicar desenvolver o condición opcional. Además, el nombre externo puede ser que falta y se sustituye por un guión, como en

_ SplitViewController: UISplitViewController
Artículos Relacionados