iOSには、インスタンス化されたときにCSVファイルを解析して結果を保持するシングルトンオブジェクトがあります。私はこのオブジェクトを普遍的にアクセス可能にしたいと思いますし、アプリケーションが終了するまでメモリから解放されないようにしたいと思います。私はARCを実行しているので、手動による保持はできません。アプリケーションが終了するまで変数をメモリに保持する方法
私はこれを行うことができますので、それはARCで動作するのですか?
ヘッダーファイル:
@interface Foo : NSObject
+ (Foo *)sharedInstance;
@end
との.mに:簡単なシングルトンは.hの中で...何かのようになります
#import "ParserStore.h"
#import "RCParserObject.h"
#import "RCDetailItem.h"
static ParserStore *defaultStore;
@implementation ParserStore
@synthesize item, data, parsedData, fields, open;
# pragma mark -
# pragma mark Singleton Methods
+ (ParserStore *) defaultStore
{
if (!defaultStore)
{
defaultStore = [[super allocWithZone:NULL] init];
}
return defaultStore;
}
+ (id) allocWithZone:(NSZone *)zone
{
return [self defaultStore];
}
- (id) init
{
NSLog(@"Running init on parser store");
if (defaultStore)
{
NSLog(@"Self data count is %d, right before return", self.parsedData.count);
return defaultStore;
}
// NSLog(@"This better only happen once");
self = [super init];
[self setParsedData:[[NSMutableArray alloc] init]];
[self parseCSVFile:@"ContentNoPathFileExt2ASCII"];
[self categorizeData];
// NSLog(@"Self data count is %d when first created", self.parsedData.count);
return self;
}
@property (atomic, retain) RCParserObject *item;
@property (atomic, retain) NSMutableArray *data;
@property (atomic, retain) NSMutableArray *parsedData;
@property (atomic) int fields;
@property (atomic) bool open;
+ (ParserStore *) defaultStore;
- (void) parseCSVFile:(NSString*)file;
- (void) categorizeData;
@end
常にあるので、シングルトンは、ARCによって解放されるべきではない:あなたのiOSアプリは、すでにあなたがどこでもアクセスできるシングルトンを持っていることを
注意それへの参照。シングルトン.mでは、静的変数に格納されているシングルトンのインスタンスですか? –
私はそれをしなかった、構文を教えてくれますか? –
ああ、私はそれをやったことはありませんが、私はそれを無しにしました、それは正しいのですか? –