2017-03-29 3 views
0

パラメータがUIViewControllerになっている必要があります。 objcから適切にマップするが、それは悲しげにUIViewControllerである。Apple API fsckup: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にマップされる可能性があります。 unsafeAddressOf(currentVC)とNULLを比較する安全でないポインタを作成するにはどうすればよいですか?

スウィフト2.3スウィフト2はスウィフト2の場合は普通ですがスウィフト3の方がはるかに優れています!回答の種類が必要です。

+0

SwiftにはNULLが存在しません。 'nil'は' Optional .none'の省略形です。 – Alexander

答えて

-1

currentVCは、nilにはなりません。 Optionalタイプではありません。

+0

実際、それはゼロにすることはできません。 obj-cからの迅速なブリッジングにより、そのことが保証されます。しかし、NULL(0x00000000)ポインタはその関数にうまく届きます。それは単に疑問の中で輪郭を描かれたダーティーダンスを必要とします。 –

+0

@AntonTropashkoこれは不可能ではありません。パラメータはObjCに 'nonnull'としてインポートする必要があります – Alexander

+0

ああ、私は100%同意します。それは可能ではありません。しかしそれは起こる。 –

関連する問題