2010-06-29 25 views
0

任何人都可以告诉我如何确保一个NSArray存在于内存中,只要该应用程序正在运行?只要应用程序运行,如何在内存中保留一个NSArray

感谢......

+1

保存数组的含义是什么?你是否想永久保存它,或者你想保存到应用程序的生命周期? – Jim 2010-06-29 12:44:32

+0

这个问题没有任何意义。也许你应该描述你的情况,你的意思是“保存” – jamone 2010-06-29 12:44:35

+0

感谢jim我想保存它直到应用程序结束... – 2010-06-29 12:47:46

回答

0

如果你想保留数组,直到退出应用程序,在分配它的App Delegate的-init方法,并将其发布到App Delegate的-dealloc方法中。除非您在内存管理中犯了一个错误并且多次释放阵列,否则它将在应用程序的整个生命周期中可用。

例如:

@interface MyApp <NSApplicationDelegate> 
{ 
    NSArray *myArray; 
} 
@end 

@implementation MyApp 

- (id)init 
{ 
    if (nil != (self = [super init])) 
    { 
    myArray = [[NSArray alloc] init]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [myArray release], myArray = nil; 
    [super dealloc]; 
} 

@end 
0

如果我理解正确,你要存储一个NSArray的实例盘?

在这种情况下使用[NSKeyedArchiver archiveRootObject:myArray toFile:path]

的文件夹来存储文件时可以用下式确定:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
2

可以保留在应用程序委托类的对象,而在申请终止发行。

在应用程序委托类

@interface MyAppDelegate : NSObject <UIApplicationDelegate> 
{ 
    UIWindow *window; 
    NSMutableArray *arrayObjects; 
} 
@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) NSMutableArray *arrayObjects; 

现在你可以使用分配给委托类的实例arrayObjects,您还可以使用存储在阵列中的价值。

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication]delegate]; 
appDelegate.arrayObjects = [[NSMutableArray alloc] initWithObjects:@"Object 1",@"Object 2",@"Object 3",nil]; 

这将保留数组中的值。现在,您可以在正确初始化之后使用数组中的任何位置。

相关问题