我需要存储特定类的实例数组。然后我可以从任何地方的类方法访问。 (有点像很多单身人士)
起初我想只有一个静态的NSMutableArray并在init
中添加self
到数组中,并在dealloc
中将其从数组中删除。但是因为NSArrays保留了它们的对象,所以永远不会达到dealloc。
我希望在runtime.h中有一个函数来获取类的所有实例,就像你可以获得所有类的列表一样。
那么如何跟踪内存中特定内容的所有实例。
答案 0 :(得分:2)
您考虑过NSObject * array[3];
吗?
答案 1 :(得分:1)
如果在您的应用程序终止时,仍然有许多尚未解除分配的单例对象,这无关紧要。由于你的数组是一个单例,所以没有问题就不会消失。
唯一的问题是数组中的对象。如果您将其添加到-init
中的数组中,则无法将其从-dealloc
中的数组中删除,因为永远不会调用-dealloc
。如果您只想保留对特定类型的所有活动对象的引用,则可以使用NSPointerArray,它类似于数组,但不保留其元素。
答案 2 :(得分:1)
创建一个简单的非保留数组:
NSMutableArray * nonRetainingArray = (NSMutableArray*)CFArrayCreateMutable(0,0,0);