草庐IT

NSHashTable

全部标签

ios - NSHashTable 保留弱引用

因此,Apple的[NSHashTableweakObjectsHashTable]文档指出:Returnsanewhashtableforstoringweakreferencestoitscontents.因此,当我运行以下代码时...NSHashTable*hashTable=[NSHashTableweakObjectsHashTable];ABC*object=[[ABCalloc]init];[hashTableaddObject:object];NSLog(@"%@",[hashTableanyObject]);object=nil;NSLog(@"%@",[hashTa

ios - 为什么 NSHashTable 保持对指针的引用?

我需要一个对象的弱NSHashTable,万一一个对象变为nil,我希望NSHashTable自动从它的列表中删除该对象。代码如下:importFoundationclassRouter:NSObject{letlisteners:NSHashTable=NSHashTable.weakObjects()}classListener:NSObject{}letrouter=Router()varlistener1:Listener?=Listener()router.listeners.add(listener1)print("before",router.listeners.coun

objective-c - Swift 数组会保留它们的元素吗?

我正在移植我的objective-c框架的一部分,其中我有用于观察目的的自定义MyNotificationCenter类。该类有一个NSArray类型的属性,其中包含所有对通知感兴趣的可观察对象。在objective-c中,一个数组会保留它的元素,这是不需要的,因为当中心试图通知他时观察者可能已经不存在了,而你不希望有保留周期。因此我使用了这段代码,它保留了数组中的所有项目而不保留它们:_observers=CFBridgingRelease(CFArrayCreateMutable(NULL,0,NULL));我知道Swift是一个不同的野兽,但是Swift中有这样的概念吗?

ios - NSHashTable 计数错误地报告非空

我正在使用一个弱对象NSHashTable,它报告计数为1,即使它是空的。以下是显示我的案例的lldb输出。p[__operationWaitListcount](NSUInteger)$4=1p[__operationWaitList.allObjectscount](NSUInteger)$7=0我最好的猜测是count计算存储在NSHashTable中的弱引用的数量,而不是有效对象的数量。但是,通过调用allObjects,我取消了指针的引用,这表明没有有效的对象,因此生成的对象数组是空的。我想确认这一点,因为在这一点上文档有点缺乏。 最佳答案

swift - 在 Swift 3 中使用 NSHashTable 实现观察者模式

添加多个委托(delegate)而不是只添加一个委托(delegate)是一项非常常见的任务。假设我们有协议(protocol)和类:protocolObserverProtocol{...}classBroadcasterClass{//Error:Type'ObserverProtocol'doesnotconformtoprotocol'AnyObject'privatevar_observers=NSHashTable.weakObjects()}如果我们试图强制ObserverProtocol符合AnyObject协议(protocol),我们会得到另一个错误:Using'O

ios - 具有弱引用的 NSHashTable

我想使用NSHashTable来保持对包含对象的弱引用。关于其他可自定义的行为(包括相等性检查),我想要与NSSet完全相同的行为(所以实际上我想要一个带有弱引用的NSSet)。你能给我一个关于如何初始化这样一个哈希表的例子吗?以下是否足够:[NSHashTablehashTableWithOptions:NSPointerFunctionsWeakMemory]还有,带有弱引用的NSHashTable会自动删除取消分配的对象吗? 最佳答案 是的,你可以使用NSPointerFunctionsWeakMemory。FacebookK