在 Swift 中声明 "NSMapTable StrongObject" 3

Declare "NSMapTable StrongObject" in Swift 3

如何在 Swift 3 中声明一个 NSMapTable?为什么 Apple 的这个例子不起作用?

let activeLines = NSMapTable.strongToStrongObjectsMapTable()

Xcode 建议更改为:

let activeLines = NSMapTable.strongToStrongObjects()

但是还是不行。

我需要将此示例转换为 Swift 3

https://developer.apple.com/library/content/samplecode/TouchCanvas/Listings/TouchCanvas_CanvasView_swift.html

NSMapTable.strongToStrongObjects() 将失败并显示错误:

error: generic parameter 'KeyType' could not be inferred
NSMapTable.strongToStrongObjects()
           ^

NSMapTable的class声明是:

open class NSMapTable<KeyType : AnyObject, ObjectType : AnyObject> : NSObject, NSCopying, NSCoding, NSFastEnumeration

您需要在其声明中指定地图 table 的键和对象类型:

NSMapTable<NSObject, NSObject>.strongToStrongObjects()