gpt4 book ai didi

iphone - @property (nonatomic, assign) id 委托(delegate);

转载 作者:可可西里 更新时间:2023-11-01 06:21:14 25 4
gpt4 key购买 nike

谁能解释一下这行是什么意思?我曾经看到 (nonatomic,retain) 这是我第一次看到“assign”关键字:

@property (nonatomic, assign) id <IconDownloaderDelegate> delegate;

谢谢你的帮助,

史蒂芬

最佳答案

基于 Peter 的回答:

创建属性时,可以使用 @synthesize 指令自动创建 getter 和 setter 方法。编译器不仅创建了两个方法

 - (id) delegate;
- (void) setDelegate: (id) newDelegate;

但也为此添加了额外的代码,以防止多个线程同时更改该属性(本质上是一个锁)。 nonatomic 告诉编译器代码不需要线程安全,这意味着更少的代码和更好的性能。

编译器使用 retain 创建的 setter 看起来像这样:

- (void) setDelegate: (id) newDelegate {
if (delegate != newDelegate) {
[delegate release];
delegate = [newDelegate retain];
}
}

这就是为什么您需要在类的 dealloc 方法中释放保留的属性。

由于一般建议是不要保留您的委托(delegate),因此您使用 assign 而不是 retain 并且 setter 看起来像这样:

- (void) setDelegate: (id) newDelegate {
if (delegate != newDelegate) {
delegate = newDelegate;
}
}

关于iphone - @property (nonatomic, assign) id <IconDownloaderDelegate> 委托(delegate);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379086/

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