我面临着非常奇怪的问题..对于我的项目我现在制作了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;
答案 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是一个自动释放的对象。