2015-05-22 17 views
6

Secondo il iOS Developer LibraryCome AppDelegate.swift sostituire AppDelegate.h e AppDelegate.m in Xcode 6.3

Il delegato applicazione è dove si scrive il codice a livello di un'applicazione personalizzata. Come tutte le classi, la classe AppDelegate è definita in due file di codice sorgente nella tua app: nel file di interfaccia AppDelegate.h e nel file di implementazione AppDelegate.m.

Tuttavia, in Xcode 6.3 sembra che solo AppDelegate.swift e non più le estensioni .h e .m. Mi piacerebbe capire come il .swift ha sostituito entrambe le estensioni .h e .m.

risposta

0

L'oggetto -C utilizza i file .h e .m, ora in rapido non è più il caso, swift non ha bisogno di file di intestazione (.h) e tutto il codice è nel file .swift.

Il tutorial nel collegamento che si riferisce riguarda un progetto Object-C e non un progetto rapido.

Forse this document è un punto di partenza migliore per voi, se si vuole seguire che passi in rapida

0

Se si lavora con il linguaggio Swift e se è stata selezionata questa lingua quando si effettua il progetto, si avrà un solo file Swift e nient'altro per i delegati.

Se si seleziona Objective-C, quindi si avranno due file separati, H e M come le versioni precedenti Xcode (non avevano Swift)

La differenza è:

in Objective-C , un file è per le dichiarazioni (Header File | .H) e uno per le implementazioni (Main File | .M).

Nella nuova lingua Swift, le dichiarazioni e le implementazioni si trovano nello stesso file (Swift File | .swift), quindi Swift ha reso questa struttura migliore.

In realtà, non vi è alcuna differenza in fase di runtime tra queste due lingue in delegato, ma Swift è più facile da imparare.

Per maggiori informazioni su Swift, scarica questo libro da iBook Store:

La programmazione Swift Language (Apple Inc.)

1

Swift è stato progettato per farla finita con un sacco di codice duplicazione incontrata in altre lingue. I file di intestazione possono essere un modo semplice per visualizzare l'interfaccia per il codice, ma in gran parte duplicano l'implementazione oltre a causare mal di testa nei disallineamenti tra i due. In Swift sia l'interfaccia che l'implementazione sono la stessa cosa, nello stesso file.

8

La risposta semplice è che AppDelegate.swift è solo la traduzione da Objective-C AppDelegate.h e AppDelegate.m, poiché Swift non richiede intestazioni e implementazioni separate, ma piuttosto un singolo file .swift.

Tuttavia, sotto il cofano, ci sono altre differenze chiave tra i due.

in Objective-C, esiste un file main.m che è unico scopo è istanziare UIApplicationMain

Nel Swift, il tag @UIApplicationMain di annotazione trovata in cima AppDelegate.swift sostituisce la necessità di qualsiasi funzione principale che esisteva nel file main.m in Objective-C. Se questo tag viene omesso, puoi utilizzare un file main.swift per creare un'istanza del tuo UIApplication utilizzando il Delegato dell'app specificato.

Un'implementazione main.swift assomiglia a questo:

import UIKit 

autoreleasepool { 
    UIApplicationMain(Process.argc, Process.unsafeArgv, nil, NSStringFromClass(AppDelegate.self)) 
} 
0

Sotto Swift 3 Xcode 8.3 Sto usando come questo

import UIKit 

UIApplicationMain(
    CommandLine.argc, 
    UnsafeMutableRawPointer(CommandLine.unsafeArgv) 
     .bindMemory(
      to: UnsafeMutablePointer<Int8>.self, 
      capacity: Int(CommandLine.argc)), 
    nil, 
    NSStringFromClass(AppDelegate.self) 
) 
Problemi correlati