问问题
570 次
2 回答
3
NSObject
通过向以下内容添加约束,我能够让它停止崩溃并实际工作T
:
class Widget<T:NSObject>
{
var value : T?
init(value:T?)
{
self.value = value
}
func description() -> String
{
let valueType = value?.self
return "Widget is a \(valueType?.className)"
}
}
let stringWidget = Widget(value:"Hello")
let numericWidget = Widget(value:9001)
let doubleWidget = Widget(value:3.14159)
let arrayWidget = Widget(value:[0xFEED, 0xBEEF, 0xCAFE])
stringWidget.description()
numericWidget.description()
doubleWidget.description()
arrayWidget.description()
也就是说,我确实相信操场和编译器有很多错误,包括您遇到的行为。
我也无法通过创建Widget(value:Widget(value:x))
.
于 2014-06-05T17:48:03.280 回答
1
我更喜欢约束: AnyObject
(不需要导入),但 B必须引用一个类。
// import Foundation
class A <B: AnyObject> { let it: B; init(_ b: B) { it = b } }
class C { let DCI = 601 }
println( A(C()).it.DCI ) // 601
于 2014-06-05T22:56:26.613 回答