Класс Singleton не работает с приложением для панели вкладок iphone - PullRequest
1 голос
/ 21 января 2011

У меня есть приложение с панелью вкладок, я использую синглтон-класс для обмена данными через мое приложение.В моем классе делегата приложения в методе didFinishLaunchingWithOptions я получаю свои данные с сервера и сохраняю их в одноэлементном классе, и я вижу, что они правильно хранятся в моем одноэлементном классе с использованием NSLog.

Но теперь, когда япытаясь получить доступ к этим данным во второй панели вкладок, нажмите «EXC_BAD_ACCESS».мой код viewDidLoad

 - (void)viewDidLoad {

SingleTon *get = [SingleTon sharedInstanceHname];
result = [get getHname:result];
list = [[NSArray alloc] initWithArray:result];
 NSLog(@"List%@", list);


[super viewDidLoad];
}

Я вижу, что ошибка («EXC_BAD_ACCESS») находится в строке

 list = [[NSArray alloc] initWithArray:result];

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

метод sharedInstance

 static SingleTon  *_sharedInstanceHname;

 - (id) init
 {
if (self = [super init])
{
    // custom initialization
    //memset(board, 0, sizeof(board));
    hname = [[NSMutableArray alloc] init];
    index =1;
}
return self;

}

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

    return _sharedInstanceHname;
        } 



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

Ответы [ 2 ]

0 голосов
/ 21 января 2011

Возвращают ли sharedInstanceHname или gHname автоматически выпущенные объекты?Вам может понадобиться сохранить их для вашего использования, например, так:

- (void) viewDidLoad
{
   SingleTon *get = [SingleTon sharedInstanceHname];
   [get retain];
   result = [get gHname:result];
   [result retain];
   [get release];
   list = [[NSArray alloc] initWithArray:result];
   [result release];

   [super viewDidLoad];
}

Я бы не использовал приведенный выше код;он служит только для демонстрации вам концепции автоматического выпуска и сохранения / освобождения права собственности.Выясните, что sharedInstanceHname или gHname возвращает, и запрограммируйте соответственно.

РЕДАКТИРОВАТЬ: Что более важно, сохраняет ли метод sharedInstanceHname в классе SingleTon право собственности на объект, возвращаемый этим методом?Если он возвращает автоматически освобожденный объект, он не является строго объектом Singleton, а является своего рода конструктором.

0 голосов
/ 21 января 2011

Что такое сообщение getHname, возвращаемое?

Я подозреваю, что 'result' не является членом NSArray.

Другая мысль, возможно, 'result' - ноль.Я не думаю, что метод initWithArray: вроде было дано нулевое значение.

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