这是我的第一个应用程序,实际上还不是完全属于我的,而是涉及对现有应用程序进行重新设计以添加功能。
它涉及一个JSON供稿,我已成功读取该供稿,然后尝试将URL的值传递给视图。这是我的应用程序委托中的代码,一旦读取了提要,该代码就会成功触发:
- (void)JSONFetch:(MYJSONFetch *)fetch gotTheCollection:(id)collection
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
self.testViewController.feedURL = [NSURL URLWithString:[collection objectForKey:@"Listings"]];
[JSONFetch release];
JSONFetch = nil;
}
然后在我的testViewController中,我有以下viewDidLoad方法:
- (void)viewDidLoad {
[super viewDidLoad];
if(self.feedURL)
{
[self startDownload];
}
}
即使在调试时,getTheCollection方法也会将一个值传递给视图的feedURL,然后它在视图内的if(self feedURL)检查中失败,因此该视图永远不会填充。
因为我对这段代码非常陌生,所以我不知道序列是否错误,或者这就是我传递变量的方式。
我知道描述相对模糊,但是即使在基本层次上,我也不知道此功能是否在目标C中起作用,尽管它不会引起任何错误,只是因为无法获取数据而坐在那里没有加载。
更新:FeedURL的定义在H文件中:
NSURL *feedURL;
然后
@property (nonatomic, retain) NSURL *feedURL;
然后在M文件中:
@synthesize feedURL;
感谢您的帮助,我最终决定重新启动整个升级,因为该项目已变成一堆重做的代码,而且我不确定什么有效,哪些无效。结果,没有明确的答案,但我想Franks可能是最接近的,所以我将其标记为答案。
最佳答案
NSURL正在自动发布,您需要自己保留它
将NSURL分配给feedURL,如下所示
self.testViewController.feedURL = [[NSURL URLWithString:[collection objectForKey:@"Listings"]] retain];
这也意味着您将必须自己释放它。