gpt4 book ai didi

ios - 如何将弱引用对象存储在数组中,objc中的字典?

转载 作者:技术小花猫 更新时间:2023-10-29 10:49:58 33 4
gpt4 key购买 nike

正如我们所知,当您将对象添加到数组 (NSMutableArray) 或字典 (NSMutableDictionary) 时,它会创建对该对象的强引用。

是否可以将对象添加到数组中并对其进行弱引用?

最佳答案

1.NS值

+ (NSValue *)valueWithNonretainedObject:(id)anObject

如果您想将对象添加到集合但不希望集合创建对它的强引用,则此方法很有用。

2.使用 block 有一个棘手的方法:

typedef id (^WeakReference)(void);

WeakReference MakeWeakReference (id object) {
__weak id weakref = object;
return ^{ return weakref; };
}

id WeakReferenceNonretainedObjectValue (WeakReference ref) {
if (ref == nil)
return nil;
else
return ref ();
}

[arr addObject:MakeWeakReference(obj)];
id newobj = WeakReferenceNonretainedObjectValue([arr objectAtIndex:0]);

3.使用一个自定义的 WeakReference 类,它持有指向该值的弱指针。


其实以上方法的设计思路都是一样的。

关于ios - 如何将弱引用对象存储在数组中,objc中的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21797617/

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