AppDelegate-Class上的字符串共享问题

时间:2010-09-02 17:58:58

标签: objective-c string

我在AppDelegate-Class上分享我的字符串:

SpeakersAppDelegate *mainDelegate = (SpeakersAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate setShareText:xmlString]; 

从AppDelegate-Class获取字符串:

 SpeakersAppDelegate *mainDelegate = (SpeakersAppDelegate *)[[UIApplication sharedApplication] delegate];
 NSString *xmlString = [mainDelegate getShareText];

如果我使用,没有问题:

xmlString = @"<rsp><photos><photo url='xyz.jpg' thumb='xyz.jpg' /></photos></rsp>";

但是当我使用时,应用程序崩溃了(xmlString正确获取了url的内容,问题是当xmlString填充了ContentFromURL时,从AppDelegate-Class中恢复了字符串):

xmlString = [NSString stringWithContentsOfURL:[NSURL URLWithString:url]];

有谁知道解决方案?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

stringWithContentsOfURL:返回自动释放的字符串。因此,当自动释放池耗尽时(通常在处理完当前事件时),您的字符串将被释放。然后,您尝试访问它,繁荣。

我怀疑你的委托不管理xmlString的生命周期。您可能希望setShareText:保留或复制字符串。小心释放任何以前的字符串。