2010-06-29 53 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]; 

這將保留數組中的值。現在,您可以在正確初始化之後使用數組中的任何位置。

相關問題