0

嗨,我刚刚学习了 Objective C,我正在做一些练习来练习自己。我这里有两节课,一节是“主课”,一节是“子课”。我需要的是获取我的“主类”的所有实例并将其放入一个数组中。我也想在我的“子类”中使用它。下面我举一个小例子。

@interface mainClass : NSObject
static NSArray *instanceObj;
@end
@implementation mainClass

//Here i used the designated initializer to initialize and add the instance to the     Array
@end


@interface subClass:mainClass
@end
@implementation subClass

//Here i want to use the Array to get instances of mainClass.
@end

如果我按照上面的示例进行操作,我会收到一条警告,指出未使用静态数组,并且在从 Array 获取数据时它为零。我也尝试在“主类”的实现文件中声明静态数组,但我不能在“子类”中使用数组。请给我一个解决方案。

朋友们,虽然这个问题不是那么重要,但它可以帮助我理解一些事情。所以请帮助我理解这个概念,我可能会完全删除这个问题。谢谢

4

1 回答 1

1

几个问题:

  1. 将 , 的static外部移动@interface到 .m 文件上方的 .m 文件中@implementation

  2. 您显然需要这样做NSMutableArray,而不是NSArray.

  3. 请注意,通过将对象添加到该数组,会建立对这些对象的强引用,并且在您将它们从数组中删除之前,它们不会被释放。

顺便说一句,您可能还想遵守Cocoa 命名约定,使用MainClassandSubClass而不是mainClassand subClass。更好的是,使用有意义的名称。

于 2013-10-08T11:33:52.287 回答