AppDelegate全局变量始终保持NULL值

时间:2011-09-20 10:08:30

标签: iphone objective-c ios xcode ipad

我面临着非常奇怪的问题..对于我的项目我现在制作了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 :(得分:0)

如果你没有将它们声明为@property (retain),则需要保留am.url,因为stringWithFormat会为你提供一个自动释放的对象,如果不保留,它将无法在此方法调用中存活

catagory_title也一样。

像这样保留他们:     am.url = [domainName retain];

但是如果你把它们分配到其他地方,不要忘记释放以前的值:

if (am.url != nil) { [am.url release]; }
am.url = [domainName retain];

答案 1 :(得分:0)

验证属性是否设置为应用委托的“url”属性。我希望它不是分配,而是你应该使用保留或复制。

在您提供的示例代码中,domainName是一个自动释放的对象。