区分死弱参考值与零值

时间:2015-07-06 18:13:03

标签: objective-c memory-management weak-references objective-c-runtime

据我所知,当我在Objective-C中取消引用一个死弱的引用时,我得到一个nil值作为结果。我想知道是否有任何方法可以实际判断是否一旦它消失而分配给变量的弱值,而不是简单地具有 nil(例如,如果从未分配过引用)。

是否可以使用较低级别的运行时函数?

我已经开始使用BOOL来记录分配参考的时间,但这让我觉得很难看。

2 个答案:

答案 0 :(得分:4)

正如罗布所说,你不能直接这样做。但你可以间接地这样做。

通过使用关联对象,您可以将NSObject的子类与弱引用的对象相关联。在该子类中,重写dealloc以通知某个弱引用对象被释放的内容。

只要您确保弱引用对象与NSObject子类的关联引用是仅对您的子类实例的强引用 ,那么您已经有效地创建了一种接收弱被引用对象何时被解除分配的通知的方法。

是的,它很脆弱。另外一个对该子类实例的强引用,整个事情都停止了。

答案 1 :(得分:2)

不,没有办法判断弱引用是否已设置为df['Counts'] = df[['col1','col2','col3']].groupby(['col1','col2','col3']).transform('count') ,因为它的引用已被解除分配。

弱引用在objc-weak.mm中由nil设置为nil