Глобальная переменная AppDelegate все время содержит значение NULL - PullRequest
0 голосов
/ 20 сентября 2011

Я сталкиваюсь с очень странной проблемой. Для своего проекта я создал 3 разных модуля, теперь я интегрирую их все. Моя проблема в том, что ни одна из моих глобальных переменных не может содержать значения. Она содержит NULL все время ..

например, посмотрите на мой код PickerView:

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)rowinComponent:(NSInteger)component 
{ 
  am=(AppMakerAppDelegate *)[[UIApplication sharedApplication]delegate]; 
  NSString *domainName = [NSString stringWithFormat:@"%@" , [array objectAtIndex:row]]; 
  am.url=domainName; 
  txtnewscategory.text = domainName; 
  am.catagory_title=[title1 objectAtIndex:row]; 
  NSLog(@"Domain:%@ --> %@ ",domainName,[array objectAtIndex:row]); 
} 

Здесь я получаю "domainName" значение точно, но когда оно присваивается глобальной переменной am.url, оно показывает нулевое значение .. То же самое для "am.catagory_title"

Примечание:

1) url и catagory_title объявлены в AppDelegate, и оба имеют тип данных NSString .

2) am является объектом appdelegate и используется следующим образом ..

  Appmaker_NewsInfoAppDelegate *am;
  am=(Appmaker_NewsInfoAppDelegate *)[[UIApplication sharedApplication]delegate];

Может кто-нибудь сказать мне, что я делаю не так? код отлично работает в исходном проекте, из которого я его экспортировал, но не при экспорте для его интеграции.

Спасибо ..

Редактировать:

3) в Appmaker_NewsInfoAppDelegate.h (класс делегата, в котором объявлены глобальные переменные)

  NSString *url;


  @property(retain,nonatomic) NSString *url;

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

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

В предоставленном вами примере кода domainName является автоматически выпущенным объектом.

0 голосов
/ 20 сентября 2011

В случае, если вы не объявили их как @property (retain), необходимо сохранить am.url, поскольку stringWithFormat дает вам автоматически освобожденный объект, который не переживет этот вызов метода, если не будет сохранен.

То же самое для catagory_title.

Сохраните их следующим образом: am.url = [domainName retain];

Но не забудьте освободить предыдущее значение, если вы назначите их в другом месте:

if (am.url != nil) { [am.url release]; }
am.url = [domainName retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...