您好,我刚刚学习了目标C,我正在做一些练习来练习自己。我在这里有两个课程,一个是#34;主要课程"和一个"子类"。我需要的是获得我的主要课程的所有实例"并把它放在一个数组中。我也想在我的"子类"中使用它。下面我举一个小例子。
@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获取数据时为nil。我还尝试在" main Class"的实现文件中声明静态数组,但我不能在" Sub Class"中使用数组。请给我一个解决方案。
朋友们,虽然这个问题并不那么重要,但它可以帮助我理解事情。所以请帮助我理解这个概念,我可以完全删除这个问题。谢谢
答案 0 :(得分:1)
有几个问题:
将static
移到@interface
之外,然后移到@implementation
上方的.m文件中。
您显然需要制作NSMutableArray
,而不是NSArray
。
预先警告通过向该数组添加对象,可以建立对这些对象的强引用,并且在从数组中删除它们之前不会释放它们。
另外,您可能还希望使用MainClass
和SubClass
而不是mainClass
和subClass
来符合Cocoa naming conventions。更好,使用有意义的名字。