有没有办法定义全局NSMutableArray?我希望能够声明数组,以便我可以通过一系列实例方法访问/修改它。以下是我在下面的代码,并希望确保这是我应该如何做的。
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
NSMutableArray *sizedWordList;
}
在.m:
sizedWordList = [[NSMutableArray alloc] init];
- (void)dealloc
{
[sizedWordList release];
}
答案 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'是你的全局数组
试一试。祝你好运。