gpt4 book ai didi

ios - 使用和不使用协议(protocol)将选择器发送到 id 有什么区别?

转载 作者:行者123 更新时间:2023-11-28 19:02:44 25 4
gpt4 key购买 nike

怎么可能呢?

编译错误:

id<NSCoding> response = [[NSObject alloc] init];
id copy = [response copy];

编译成功:

id response = [[NSObject alloc] init];
id copy = [response copy];

编译成功:

id<NSCoding> response = [[NSObject alloc] init];
id copy = [((id)response) copy];

$clang --version
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

附言代码仅用于演示,将引发 NSInvalidArgumentException

最佳答案

当您声明类型为 id<SomeProtcol> 的变量时,编译器假定您只会调用协议(protocol)中的方法。 copy不是 NSCoding 的方法协议(protocol)。

当然如果变量只是id ,您可以调用当时任何已知类/协议(protocol)中可用的任何方法。

关于ios - 使用和不使用协议(protocol)将选择器发送到 id 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345172/

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