gpt4 book ai didi

Swift 2,协议(protocol)扩展和 respondsToSelector

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:06 24 4
gpt4 key购买 nike

我不确定,在我看来这是某种错误或 Swift 2.0 中协议(protocol)扩展的错误实现。

我有 protocolA、protocolB 扩展 protocolA 并在 protocolB 扩展中实现方法。

我已经使一个类实例符合 protocolB,但是当 respondsToSelector 检查 protocolA/B 方法时,结果为 false。

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") // **False, never passing here**
}

应该报告为错误?

最佳答案

很有趣。对我来说看起来像个错误。它确实识别类中的函数,但不识别扩展中的函数。不管 Instance 是什么类型。此外,没有扩展代码将无法编译,因为协议(protocol)方法是非可选的。所以真的看起来像一个错误/功能? in 响应选择器的实现。

关于Swift 2,协议(protocol)扩展和 respondsToSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com