我不确定,在我看来,它是Swift 2.0中的协议扩展的某种错误或不良实现.
我有protocolA,protocolB扩展protocolA和protocolB扩展中的实现方法.
我已经使类实例符合protocolB,但是当respondsToSelector检查protocolA/B方法时,结果是错误的.
import Cocoa
import XCPlayground
protocol ProtocolA : NSObjectProtocol {
func functionA()
}
protocol ProtocolB : ProtocolA {
func functionB()
}
extension ProtocolB {
func functionA() {
print("Passed functionA")
}
func functionB() {
print("Passed functionB")
}
}
class TestClass : NSObject, ProtocolB {
override init () {
}
}
var instance:TestClass = TestClass()
instance.functionA() // Calls code OK..
if instance.respondsToSelector("functionA") {
print("Responds to functionA") // **False, never passing here**
}
if instance.respondsToSelector("functionB") {
print("Responds to functionB") // …Run Code Online (Sandbox Code Playgroud) 随着 Audio Unit v3 的到来,我们子类的主要类是新的 AUAudioUnit 目标 C 类。
AUAudioUnit 具有 AUParameter 实现,并且可以通过 AUAudioUnit.parameterTree 属性轻松使用 AUParameter。
我无法使用音频单元属性,因为 AUAudioUnit 不公开其作为参数所需的 AudioUnit 属性
extern OSStatus
AudioUnitGetProperty( AudioUnit inUnit,
AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData,
UInt32 * ioDataSize)
Run Code Online (Sandbox Code Playgroud)
目前,AUAudioUnit 上没有 AudioUnit 类属性或检查。我不确定如何在 AudioUnit v3 框架中使用 AudioUnit 属性。
有人知道如何在新 API v3 中使用 AudioUnit 属性吗?
谢谢。
let startDate: Date = Date()
let predicate = #Predicate<Trip> { session in
session.startTime >= startDate
}
Run Code Online (Sandbox Code Playgroud)
当 #Predicate 在 Date 上不起作用时,有人遇到这个问题吗?我收到不支持的谓词错误。有什么想法要解决吗?