2013-03-04 2 views
0

У меня возникли проблемы с reloadData в TableView. Я, наконец, смог установить, что переменная, которую я использую, чтобы сообщить reloadData, что перезагрузить, сбрасывается до NULL.переменные сбрасываются до нуля после reloaddata в объекте-c

Я добавил переменную в ClassAppDelegate.h следующим образом:

@property (nonatomic, retain) id globalid; 

, а затем синтезирован в ClassAppDelegate.m следующим образом:

@synthesize globalid; 

я Acces переменную, в которой когда-либо класс и метод мне нужно использовать его (в методе):

NDSClassAppDelegate *detailControllerAD = [[NDSClassAppDelegate alloc] init]; 

И th ен использовать его таким образом, чтобы получить переменную в этом методе:

NSLog(@"GlobalID at FetchTweets %@", detailControllerAD.globalid); 

Почему моя переменная будет сбросить на reloadData?

ответ

2

Вы не должны создавать экземпляр объекта делегата приложения - ваше приложение предоставляется при запуске как часть функции UIApplicationMain(), и оно должно соответствовать сроку службы вашего приложения. Используйте [[UIApplication sharedApplication] delegate], чтобы получить делегат, то есть NDSClassAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]. Затем в любом месте, где вам нужно установить или прочитать свойство globalid, установите его в этом экземпляре делегата приложения.

Переменные экземпляра (свойства которых обычно поддерживаются) изменяются независимо друг от друга между экземплярами объектов, поэтому вы не можете сохранить значение в одном объекте и затем иметь одно и то же значение в другом.

+0

Спасибо, попробуем. Имеет смысл. – Jimmypooza

0

Когда вы используете это NDSClassAppDelegate * detailControllerAD = [[NDSClassAppDelegate alloc] init]; новый экземпляр, созданный делегатом приложения.

использование этого

[[UIApplication sharedApplication] делегат] получить существующий экземпляр приложения делегата.

+0

Спасибо, что применит его. – Jimmypooza

0

Вы можете использовать вышеуказанный способ для обмена данными по всему приложению. У меня также было одно и то же требование в одном из моих предыдущих приложений. На двух трех форумах я прочитал о совместном использовании данных, хотя из приложения. Но, по их мнению, это не очень хорошая практика для хранения данных на уровне приложений, потому что использование делегата приложения в качестве объекта модели не связано с делегатом. Таким образом, более чистый подход - использовать класс singleton. Создайте один одноэлементный класс, чтобы сохранить все состояния переменных. Это будет более чистый подход.