如何在Swift 3中声明NSMapTable?苹果公司的这个例子为什么不起作用?

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的类声明为:
open class NSMapTable<KeyType : AnyObject, ObjectType : AnyObject> : NSObject, NSCopying, NSCoding, NSFastEnumeration

您需要在其声明中指定映射表的键和对象类型:
NSMapTable<NSObject, NSObject>.strongToStrongObjects()

09-07 13:50