лучший способ сохранить массив в коде - PullRequest
0 голосов
/ 10 ноября 2010

Дорогие все.Мне нужно сохранить некоторую временную информацию в коде.Когда я получаю к нему доступ, я делаю мгновенную копию своего класса, получаю результат в виде MutableArray, но мне приходится использовать этот массив в других методах кода.Я не люблю делать мгновенные копии моего класса снова, потому что это занимает память и процессорное время, но я должен использовать остальную часть массива в других методах.В настоящее время я храню его в контроллере массива, но мне нравится искать другой лучший способ.По некоторым причинам я не люблю отправлять указатель на этот MutableArray в качестве параметра метода.ProjectArrays.h:

#import <Cocoa/Cocoa.h>
@interface ProjectArrays : NSObject {
NSMutableArray *myMutableArray;    
}
@property (nonatomic, retain) NSMutableArray *myMutableArray;
+(ProjectArrays *)sharedProjectArrays;

@end

ProjectArrays.m:

#import "ProjectArrays.h"
#import "SynthesizeSingleton.h"

@implementation ProjectArrays

SYNTHESIZE_SINGLETON_FOR_CLASS(ProjectArrays)

@synthesize myMutableArray;

- (void)dealloc {
// Clean-up code here.
[myMutableArray release];
[super dealloc];
}

@end

AppDelegate.m:

[[ProjectArrays sharedProjectArrays].myMutableArray addObject:@"Test"];

NSLog (@"This is test first point:%@",[[ProjectArrays sharedProjectArrays].myMutableArray objectAtIndex:0]);

2010-11-21 19: 26: 18,636 снег[14523: a0f] Это первая точка теста: (ноль)

похоже, что код не заботится об объектах.

1 Ответ

1 голос
/ 10 ноября 2010

Попробуйте использовать шаблон синглтона.Создайте какой-нибудь одноэлементный класс и оставьте там переменные среды.

Вот полезный заголовочный файл: http://snipplr.com/view/32737/synthesizesingleton-definition-header/

Это поможет вам быстро создавать синглеты.

РЕДАКТИРОВАНИЕ:

Вот синглтон, который вы хотели бы использовать

//YourSingletonClassName.h
#import <Foundation/Foundation.h>


@interface YourSingletonClassName : NSObject {
  NSMutableArray *myMutableArray;
}

@property (nonatomic, retain)   NSMutableArray *myMutableArray;

+ (YourSingletonClassName *)sharedYourSingletonClassName;

@end


//YourSingletonClassName.m
#import "YourSingletonClassName.h"
#import "SynthesizeSingleton.h"

@implementation YourSingletonClassName

SYNTHESIZE_SINGLETON_FOR_CLASS(YourSingletonClassName)

@synthesize myMutableArray;

- (id) init
{
  self = [super init];
  if (self != nil) {
     self.myMutableArray = [NSMutableArray new];
  }
  return self;
}


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

@end

Вы можете позвонить YourSingletonClassName куда угодно по [YourSingletonClassName sharedYourSingletonClassName];, вы не должны выделять / инициировать его,Например:

[[YourSingletonClassName sharedYourSingletonClassName].myMutableArray addObject:@"some_object_to_add"];

Пожалуйста, поищите в Google синглтон-паттерн и изучите obj c концепции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...