定义全局NSMutableArray

时间:2011-04-19 08:48:41

标签: objective-c

有没有办法定义全局NSMutableArray?我希望能够声明数组,以便我可以通过一系列实例方法访问/修改它。以下是我在下面的代码,并希望确保这是我应该如何做的。

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    NSMutableArray *sizedWordList;
}

在.m:

sizedWordList = [[NSMutableArray alloc] init];

- (void)dealloc
{
    [sizedWordList release];
}

4 个答案:

答案 0 :(得分:1)

当然,您可以创建一个类并将其导入到您想要使用它的位置。

头:

#import <Foundation/Foundation.h>

extern NSMutableArray * typesArray;

@interface GlobalVariables : NSObject {

}

@end

实施

#import "GlobalVariables.h"

@implementation GlobalVariables

NSMutableArray * typesArray;

@end

现在,只要导入标题

,就可以访问typesArray

答案 1 :(得分:1)

在我看来,你想要一个全局变量,而是一个实例变量。在这种情况下,您的声明:

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    NSMutableArray *sizedWordList;
}
头文件中的

是正确的。但是,在实现文件中,不能在实例方法之外执行以下操作(或者,如果它确实是一个全局变量,则在类方法或函数之外):

sizedWordList = [[NSMutableArray alloc] init];

在Objective-C中不合法。初始化实例变量的正确位置是-init方法。由于您的类是UIViewController的子类,因此您应覆盖其指定的初始值-initWithNibName:bundle:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
    self = [super initWithNibName:nibName bundle:nibBundle];
    if (self) {
        sizedWordList = [[NSMutableArray alloc] init];
    }
    return self;
}

您的-dealloc方法几乎是正确的 - 请记住,您应该在[super dealloc]方法结束时始终发送-dealloc

- (void)dealloc
{
    [sizedWordList release];
    [super dealloc];
}

完成此操作后,您可以在任何其他实例方法中使用该数组。例如,

- (void)logWordList {
    NSLog(@"%@", sizedWordList);
}

答案 2 :(得分:0)

您可以创建singleton并共享该实例。单例只允许存在一个类的现有实例。因此,每个访问代码都使用相同的实例。

答案 3 :(得分:0)

在AppDelegate中创建数组的单例实例,并在整个应用程序中访问它。

**YourAppDelegate *delegate = (YourAppDelegate *) [[UIApplication sharedApplication] delegate];**

'delegate.sizedWordList'是你的全局数组

试一试。祝你好运。