传递给视图的IOS值丢失或遗忘

时间:2011-10-11 11:16:26

标签: objective-c ios variables

这是我的第一个应用程序,实际上甚至不完全是我的应用程序,而是涉及重新使用现有应用程序来添加功能。

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

尽管我调试时,gotTheCollection方法将一个值传递给视图的feedURL,然后在视图中的if(self feedURL)检查失败,因此视图永远不会被填充。

由于我对这段代码很陌生,我不知道序列是否错误,或者可能是我传递变量的方式。

我知道描述相对模糊,但即使在基本层面上我也不知道这个功能是否在目标C中有效,但它不会导致任何错误,只是坐在那里没有加载因为它无法得到数据

更新:FeedURL的定义如下:H文件:

NSURL *feedURL;

然后

@property (nonatomic, retain) NSURL *feedURL;

然后在M文件中:

@synthesize feedURL;

感谢帮助人员,我终于决定重新启动整个升级,因为项目变得一团糟的重写代码,我无法确定哪些有效,哪些无效。因此,对此没有明确的答案,但我想弗兰克斯可能是最接近的,所以我会将其标记为答案。

1 个答案:

答案 0 :(得分:1)

NSURL正在自动释放,您需要自己保留

将NSURL分配给feedUR,就像这样

self.testViewController.feedURL = [[NSURL URLWithString:[collection objectForKey:@"Listings"]] retain];

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