我知道我不应该检查或使用retainCount,但我想知道是否有一种方法可以仅在保留计数为0之后才从NSMutableArray中删除一个对象。
基本上,我想将对象添加到数组中,并让这些对象在其他窗口之间共享。当一个窗口使用它时,我希望保留计数增加 1。当它不再使用时,我希望它减少。但是,如果某个窗口仍在使用它,那么我希望它对所有其他窗口都可用。当所有窗口不再使用它时,我希望将它从阵列中移除并完全释放。
谢谢!
我知道我不应该检查或使用retainCount,但我想知道是否有一种方法可以仅在保留计数为0之后才从NSMutableArray中删除一个对象。
基本上,我想将对象添加到数组中,并让这些对象在其他窗口之间共享。当一个窗口使用它时,我希望保留计数增加 1。当它不再使用时,我希望它减少。但是,如果某个窗口仍在使用它,那么我希望它对所有其他窗口都可用。当所有窗口不再使用它时,我希望将它从阵列中移除并完全释放。
谢谢!
对于在发布时从数组中自动删除,您可以使用关联对象,如 Dave DeLong 在这里描述的:
如何将活动对象添加到 NSMutableArray 并在释放时删除它们?
但是您可能最好使用NSCountedSet
,因为它完全实现了您所追求的。它只是缺少项目顺序。为了弥补项目订单的不足,您可以使用附加NSMutableArray
项来保持订单并在其中添加/删除项目与您的计数集同步。