objective-c中的实例数组

时间:2011-09-05 11:42:47

标签: objective-c macos instance

我需要存储特定类的实例数组。然后我可以从任何地方的类方法访问。 (有点像很多单身人士)

起初我想只有一个静态的NSMutableArray并在init中添加self到数组中,并在dealloc中将其从数组中删除。但是因为NSArrays保留了它们的对象,所以永远不会达到dealloc。

我希望在runtime.h中有一个函数来获取类的所有实例,就像你可以获得所有类的列表一样。

那么如何跟踪内存中特定内容的所有实例。

3 个答案:

答案 0 :(得分:2)

您考虑过NSObject * array[3];吗?

答案 1 :(得分:1)

如果在您的应用程序终止时,仍然有许多尚未解除分配的单例对象,这无关紧要。由于你的数组是一个单例,所以没有问题就不会消失。

唯一的问题是数组中的对象。如果您将其添加到-init中的数组中,则无法将其从-dealloc中的数组中删除,因为永远不会调用-dealloc。如果您只想保留对特定类型的所有活动对象的引用,则可以使用NSPointerArray,它类似于数组,但不保留其元素。

答案 2 :(得分:1)

创建一个简单的非保留数组:

NSMutableArray * nonRetainingArray = (NSMutableArray*)CFArrayCreateMutable(0,0,0);