2016-06-13 1 views
1

Swift 2, j'ai pu initialiser un struct NSZone vide comme ceci:INIT une struct NSZone vide avec Swift 3

let z = NSZone() // ObjectiveC.NSZone 

J'ai utilisé ce à bouchonner appels de test requis NSZone. Avec Swift 3, l'interface a été modifiée de sorte que le initialiseur est plus disponible:

Swift 2.3:

public struct NSZone : NilLiteralConvertible { 
    public init() 
    /// Create an instance initialized with `nil`. 
    public init(nilLiteral:()) 
} 

Swift 3:

public struct NSZone { 
} 

est Apple pousse à utiliser un NSZone en option à la place de l'ancien initialiseur NSZone() qui a initialisé NSZone avec une valeur nil?

Essayez d'étendre NSZone ajouter un résultat initialiseur une erreur:

extension NSZone { 
    init() { } // Return from initializer without initializing all stored properties 
} 

Répondre

3

par le projet open source Swift design doc pour l'importation API ObjC dans Swift 3:

Nullable NSZone parameters are given a default value of nil . Zones are essentially unused in Swift and should always be nil .

Si vous êtes tester tous les appels qui nécessitent une zone, vous devriez passer nil de toute façon.