非常Noob问题:
我在控制器实例中有一些事件处理方法(使用Interface Builder创建);我需要收集各个事件方法需要访问的数组中的对象。数组var应该在controller.m文件中吗?如果那是它的地方,我可以写一个init方法吗?
这是一个大纲:
@implementation myController
NSArray *myVar = [NSArray array]; (Compiler doesn't like it)
- buttonClick
{
}
- menuSelection
{
}
@end
答案 0 :(得分:0)
如果您希望能够将对象添加到阵列,则需要将其设为NSMutableArray。如上所述,全局变量的初始化可以在+(void)初始化方法中完成。
但是,一般来说,应避免使用这些变量。最好将数组存储在控制器中,并在控制器的init方法中初始化它。
答案 1 :(得分:0)
编译器不喜欢这样,因为您无法在C初始化程序中调用函数。
假设这是UIViewController的子类,如果你想为每个控制器建一个数组,你应该把它作为一个实例变量并在-viewDidLoad
初始化它,或者你可以在-initWithNibName:bundle:
中做到这一点。 。该数组应分别在-viewDidUnload
或-dealloc
中发布。
如果您的数组应该是唯一的并且在所有控制器之间共享,那么最简单的方法是创建一个类方法:
+(NSArray*) myVar
{
static NSArray* theArray = nil;
if (theArray == nil)
{
theArray = [[NSArray alloc] init]; // Do not use [NSArray array] because you need to own the returned object
// until the program dies
}
return theArray;
}
注意我已经随处使用NSArray
,但您更有可能需要NSMutableArray
。