¿Por qué el framework de MapKit debe estar vinculado a cada file mientras que CoreData Framework no debe?

Marcos y bibliotecas vinculadas en mi proyecto escrito en Swift:

introduzca la descripción de la imagen aquí

Supongamos que tengo dos files en mi proyecto: AppDelegate.swift y ViewController.swift

Mis sentencias de import en AppDelegate.swift :

 import UIKit import Foundation import CoreData import MapKit 

Así que simplemente aquí puedo usar, por ejemplo: classs NSManagedObject y MKMapView .

En ViewController.swift no tengo ninguna instrucción de import, pero puedo usar allí NSManagedObject frente a MKMapView . ¿Por qué?

¿No debería estar en Swift que un marco importado en un file debería ser visible para otros files? ¿Por qué CoreData es visible para todos, pero MapKit no lo es?

También utilizo Project-Bridging-Header.h en mi proyecto con las siguientes declaraciones de import:

 @import AFNetworking; @import Crashlytics; @import Fabric; @import FBSDKCoreKit; @import FBSDKLoginKit; @import MagicalRecord; @import MTBBarcodeScanner; @import QRCode; @import SVProgressHUD; 

  • Swift trabaja con modules .
  • Todos los files son visibles para otros files en el mismo module sin importarlos.
  • Se puede acceder a todas las classs creadas en diferentes modules fuera solo mediante una statement de import . Los frameworks son diferentes modules. Si necesita acceder al framework, debe importarlo para cada file donde lo vaya a usar.

  • Bridging-Header.h file Bridging-Header.h distribuye otros modules / frameworks a cada file en el module donde existe ese encabezado.

  • si el module A importa el module B , y necesita acceder a ambos en el module C , basta con importar solo el module A en su module C.