这是我的第一个应用程序,实际上还不是完全属于我的,而是涉及对现有应用程序进行重新设计以添加功能。

它涉及一个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];


这也意味着您将必须自己释放它。

08-27 19:36