Класс Singleton работает на iOS 4.0 и более ранних версиях, но не на 4.1 и 4.2 SDK - PullRequest
0 голосов
/ 23 января 2011

Я использую Singleton Class для обмена огромными данными, которые я получаю от веб-сервиса для обработки, что я делал и в моих предыдущих приложениях. Но с новым ios 4.2 он не работает, я не могу понять причину, по которой он не работает, поскольку он не имеет ничего общего с новыми API / Framework.

Вот код моего синглтона:

 @interface SingleTon : NSObject {

  NSMutableArray *hname;

}
+ (SingleTon *) sharedInstanceHname;

//hname
-(NSMutableArray *) getHname:(NSMutableArray  *)x;
-(void) setHname:(NSMutableArray  *)x;

.m класс:

@ реализация SingleTon статический SingleTon * _sharedInstanceHname;

 - (id) init
 {
if (self = [super init])
{
    // custom initialization
    //memset(board, 0, sizeof(board));
    hname = [[NSMutableArray alloc] initWithObjects:@"NO RESULT",nil];

    index =1;
}
return self;

}

  + (SingleTon *) sharedInstanceHname
  {
if (!_sharedInstanceHname)
{
    _sharedInstanceHname = [[SingleTon alloc] init];
}

return _sharedInstanceHname;

}

- (NSMutableArray *) getHname:(NSMutableArray *)x
 { 
return hname;
  }

- (void) setHname:(NSMutableArray *)x
{
hname = x;
 }

Вот как я использую Singleton для сохранения значения в моем первом представлении:

    SingleTon *sname = [SingleTon sharedInstanceHname];
 [sname setHname:hname];

А вот как я получаю доступ к этому установленному значению во втором методе viewDidLoad представления:

    SingleTon *places = [SingleTon sharedInstanceHname];
NSLog(@"%@", [places getHname:getname]);

Я пытался сохранить все возможные версии, но бесполезно ... и да, ошибка также меняется ... иногда это "EXC_BAD_ACCESS", а иногда другое

1 Ответ

2 голосов
/ 23 января 2011

Вызывая initWithObjects:, вы должны завершить список значений с помощью nil.За исключением того, что это была опечатка, которую вы сделали при подготовке примера.

Также может быть проблема с вашим методом setHname:, который не сохраняет и не копирует назначаемое значение.

...