gpt4 book ai didi

objective-c - Objective -c 委托(delegate)语法查询

转载 作者:行者123 更新时间:2023-12-01 18:27:50 25 4
gpt4 key购买 nike

我是 Objective-c 的新手,对委托(delegate)的使用方式非常困惑。我遇到了这段代码,我想用它来澄清一些疑问。

#import <Foundation/Foundation.h>

@protocol ProcessDataDelegate <NSObject>

@required
- (void) processSuccessful: (BOOL)success;

@end

@interface ClassWithProtocol : NSObject
{
id <ProcessDataDelegate> delegate;
}

@property (retain) id delegate;

-(void)startSomeProcess;

@end

在这里,有 2 处对“代表”一词的引用,任何人都可以解释在“id 角括号委托(delegate)角括号封闭”的上下文中使用它的含义吗?

同样,有一个名为 delegate 的属性。它不应该引起任何冲突吗?

提前致谢,

最佳答案

不,只有一个属性,由 @property (retain) id delegate 定义的属性。 ;另一个是 NSObject 的(某种)私有(private)变量这不是objective-c意义上的属性......那么,你有@synthetize .m 文件中的关键字,它扩展了属性。

另一种表示法,id<protocol>说明,该委托(delegate)应符合某个协议(protocol)。

您可以从类(class)访问两者,但您只能从外部访问属性。此外,对于一个属性,还会生成一些其他的东西——在保留(不使用 ARC 时)的情况下,内存管理例程。

为了完成(困惑?)讲座,有一个很好的方法来拥有类私有(private)属性,当你在 .m 文件中定义它们而不是在匿名类别中的 .h 中定义它们时,例如:

@interface MyClass()

@property (nonatomic, retain) NSString privateString;

@end

@implementation
@synthetize privateString;

// ...

@end

关于objective-c - Objective -c 委托(delegate)语法查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11750486/

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