【发布时间】:2016-08-22 09:09:08
【问题描述】:
在更新到 Xcode 8 Beta 6 时,我看到引入了一种新类型:UIActivityType
所以我尝试在我的 UIActivity 自定义类中做这样的事情:
class FooActivity: UIActivity {
func retrieveActivityType() -> String {
return "someStringDescribingActivityType"
}
override open var activityType: UIActivityType? {
@objc(retrieveActivityType)
get {
return UIActivityType(rawValue: "someStringDescribingActivityType")
}
}
}
其中retrieveActivityType() 是Objective-C 的等价物,因为UIActivityType 仅在Swift 中定义。但到目前为止没有运气,仍然有两个错误:
Property cannot be an @objc override because its type cannot be represented in Objective-C'@objc' getter for non-'@objc' property
我有什么明显的遗漏吗?
【问题讨论】:
-
如果该类型只存在于 Swift 中,为 getter 定义不同的名称并没有帮助。
-
旁白:如果
UIActivityType不是UIKit类型,我建议重命名它。令人困惑。 -
如果您只是扩展类
UIActivityItemProvider并覆盖任何UIActivityItemSource协议方法(特别是为活动类型提供主题的方法),则会出现问题。错误是:“方法不能是 @objc 覆盖,因为参数 2 的类型不能在 Objective-C 中表示”
标签: objective-c swift swift3 xcode8-beta6