2017-03-29 24 views
0

我有一个情况,当参数应该是UIViewController! 正确地从objc映射,但可惜的是,它是UIViewController。Apple API fsckup:我如何在swift中使unsafepointerof 0 a.k.a. NULL/0x0?

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController currentVC: UIViewController) -> UIViewController? { 
    guard unsafeAddressOf(currentVC).hashValue != 0 else { // 31316097 filed with apple 

感觉有点脆弱。对于0x0以外的指针,hashValue可能映射为0。 如何制作一个不安全的NULL指针来比较unsafeAddressOf(currentVC)?

Swift 2.3如果它是一个典型的可以用于swift 2但是但是我们已经做得很好,在swift 3中更好!这种回答是必需的。

+0

Swift中不存在'NULL'。有'nil',这是'Optional .none'的简写。 – Alexander

回答

-1

currentVC不能是nil。这不是Optional类型。

+0

的确,它不可能是零。从obj-c快速桥接确保。但NULL(0x00000000)指针到达该功能就好了。这就需要在问题中勾勒出肮脏的舞蹈,而不是简单地做保守的力量解开。 –

+0

@AntonTropashko这应该是不可能的。该参数应该被导入ObjC作为'nonnull' – Alexander

+0

哦,我同意100%。它不应该是可能的。但它确实发生。 –

相关问题