Obtener marco de UIBarButtonItem devuelve cero

Estoy intentando acceder al marco de un UIBarButtonItem así:

 if let items = self.toolbarItems{ let item = items[1] print(item) let view = item.value(forKey: "view") as! UIView } 

print (item) devuelve un artículo existente. ¿Por qué no es posible recuperar una UIView ?

Ese es el problema con el uso de properties indocumentadas. Pueden cambiar sin previo aviso.

Aquí están los resultados usando Xcode 8.3.1 usando iOS 10 SDK.

 let item1 = UIBarButtonItem(customView: UIView()) let view1 = item1.value(forKey: "view") as? UIView print("\(view1)") 

huellas dactilares

 Optional(<UIView: 0x7f9049001400; frame = (0 0; 0 0); layer = <CALayer: 0x60000003cc00>>) 

sin embargo

 let item2 = UIBarButtonItem(title: "Test", style: .plain, target: nil, action: nil) let view2 = item2.value(forKey: "view") as? UIView print("\(view2)") 

huellas dactilares

 nil 

Incluso llevando esto al siguiente nivel

 class MyObject: NSObject { @objc var view: UIView? } // Fake to get selector let item3 = UIBarButtonItem(title: "Test", style: .plain, target: nil, action: nil) let view3 = (item3 as NSObjectProtocol).perform(#selector(getter: MyObject.view))?.takeRetainedValue() print("\(view3)") 

huellas dactilares

 nil