Clase Swift vs Clase Cocoa Touch en Xcode6

Soy nuevo en el desarrollo de iOS y he comenzado directamente con Swift.

Cuando quiero agregar un nuevo file a un proyecto, el IDE me presenta dos files que parecen utilizarse indistintamente en los tutoriales que he visto hasta ahora. Son "Cocoa Touch Class" y "Swift Class".

Cuando creo una nueva class Cocoa Touch, esto es lo que obtengo (dependiendo de la class henetworkingada)

import UIKit class CtTest: NSObject { } 

y cuando creo un nuevo file Swift, obtengo esto:

 import Foundation 

La extensión para ambas classs es .swift

Si agrego la definición de class al file Swift y la modifico de la siguiente manera:

 import UIKit import Foundation class SwTest:NSObject { } 

¿Hay alguna diferencia entre los dos files?

De ser así, ¿qué classs se prefieren en qué escenarios, por ejemplo? Ver controlleres, models, etc.

Gracias

No hay diferencia entre las dos templates diferentes al código que colocaron en el file de forma pnetworkingeterminada. Al igual que notó, ambos tienen la misma extensión y ambos son files de text sin formatting: el comstackdor no los trata de manera diferente.

La regla general es solo importar un module si lo necesita en ese file, básicamente si se produce un error de compilation de lo contrario. Obtendrá un error de comstackdor debido a la falta de importaciones si intenta usar types de ellos.

Fundación

Foundation es básicamente la biblioteca estándar de desarrollo de Apple, implementada en Objective-C. Incluye types de datos como NSArray, NSString y NSDictionary. Sin embargo, Swift proporciona reemploops para estos types de datos: Array, String y Dictionary. Solo debe import Foundation en files que intenten interactuar con las API de Objective-C. Sin embargo, dado que todas las API existentes se escriben en Objective-C (dado que Swift es tan nuevo), tendrá que importar Foundation en casi todos los files excepto los objects de dominio básicos.

UIKit

UIKit en realidad incluye la Fundación. Si importa UIKit, no necesita importar Foundation. UIKit es una colección de API estándar específicas para la interfaz de iOS. Incluye vistas como UITableView y controlleres como UIViewController. Necesitará esto importante siempre que trabaje en la interfaz de usuario de las aplicaciones de iOS.

Clase Cocoa Touch

Esta plantilla es útil para subclasificar classs desde UIKit y, potencialmente, para que Xcode genere files de construcción de interfaz para usted. Si no necesita ninguna de esas cosas, simplemente debería usar la plantilla de Swift Class. Solo tiene su object henetworkingar de NSObject si realmente tiene que hacerlo (si necesita poder usar su class Swift desde Objective-C). Si no henetworkingas de NSObject, hay optimizaciones extra que puede hacer el comstackdor y evita algunas de las partes más lentas del time de ejecución de Objective-C.