gpt4 book ai didi

ios - id someObject 和 NSObject *someObject 的区别

转载 作者:行者123 更新时间:2023-12-01 20:10:03 25 4
gpt4 key购买 nike

协议(protocol)实现分为三种:

第一个:

@protocol FirstProtocol
...
@end

@property(nonatomic, weak) id<FirstProtocol> delegate;

第二个:
@protocol SecondProtocol<NSObject>
...
@end

@property(nonatomic, weak) id<FirstProtocol> delegate;

第三个:
@protocol SecondProtocol
...
@end

@property(nonatomic, weak) NSObject<FirstProtocol> *delegate;

我只知道“ <NSObject>NSObject<protocol>”可以让委托(delegate)调用 NSObject 选择器。
但我不知道他们之间有什么区别。哪一个是最佳实践。

最佳答案

您正在声明可以在 delegate 上调用哪些方法.

id<FirstProtocol> ,唯一支持的方法是在 FirstProtocol 中指定的方法。 .

id<SecondProtocol> , 支持的方法是 SecondProtocol 中指定的方法和 NSObject protocol .这使您可以访问 -class , -superclass , -isEqual: , -hash , -self ,以及 NSObject 中的所有其他方法协议(protocol)。

NSObject<FirstProtocol> , 对象必须是一种 NSObject .它可以访问 -copy , -mutableCopy ,以及其他一切取决于 NSObject类(class)。

关于ios - id<protocol> someObject 和 NSObject<protocol> *someObject 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914234/

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