gpt4 book ai didi

iphone - 委托(delegate)的非保留数组

转载 作者:行者123 更新时间:2023-12-03 18:12:23 24 4
gpt4 key购买 nike

在 Cocoa Touch 项目中,我需要一个特定的类来不仅具有单个委托(delegate)对象,而且还具有多个委托(delegate)对象。

看来我应该为这些委托(delegate)创建一个 NSArray;问题是 NSArray 会保留所有这些委托(delegate),但它不应该保留(按照惯例,对象不应保留其委托(delegate))。

我应该编写自己的数组类来防止保留还是有更简单的方法?谢谢!

最佳答案

我不久前发现了这段代码(不记得该归属于谁)。

这是非常巧妙的,使用类别来允许创建一个可变数组,通过使用带有适当回调的 CFArray 支持它,该数组不会保留/释放。

@implementation NSMutableArray (WeakReferences)
+ (id)mutableArrayUsingWeakReferences {
return [self mutableArrayUsingWeakReferencesWithCapacity:0];
}

+ (id)mutableArrayUsingWeakReferencesWithCapacity:(NSUInteger)capacity {
CFArrayCallBacks callbacks = {0, NULL, NULL, CFCopyDescription, CFEqual};
// We create a weak reference array
return (id)(CFArrayCreateMutable(0, capacity, &callbacks));
}
@end

编辑找到原始文章:http://ofcodeandmen.poltras.com

关于iphone - 委托(delegate)的非保留数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692161/

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