2016-06-13 4 views
1

В Swift 2, я был в состоянии инициализировать пустую NSZone-структуру следующим образом:Init пустого NSZone-структуру с Swift 3

let z = NSZone() // ObjectiveC.NSZone 

Я использовал это незавершенным тестовые вызовы, требующие NSZone. С Swift 3, интерфейс был изменен так, что инициализатор больше не доступны:

Swift 2,3:

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

Swift 3:

public struct NSZone { 
} 

яблочно толкая использовать дополнительный NSZone вместо старого инициализатора NSZone(), который инициализировал NSZone с значением nil?

Попробуйте расширить NSZone добавить результаты инициализатора в ошибке:

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

ответ

3

За Свифт проект с открытым Источника design doc для импорта ObjC API в Swift 3:

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

Если вы тестирование любых вызовов, требующих зоны, в любом случае вы должны пройти nil.

Смежные вопросы