#objective-c #ios #variables
#objective-c #iOS #переменные
Вопрос:
Это мое первое приложение, и на самом деле оно даже не полностью мое, а скорее предполагает переработку существующего приложения для добавления функциональности.
Это включает в себя канал 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) в представлении, и, таким образом, представление никогда не заполняется.
Поскольку я новичок в этом коде, я понятия не имею, неверна ли последовательность, или, может быть, это то, как я передаю переменную.
Я знаю, что описание относительно расплывчатое, но даже на базовом уровне я не знаю, работает ли эта функциональность в objective C, хотя это не вызывает никаких ошибок, просто сидит там, не загружаясь, потому что он не может получить данные.
ОБНОВЛЕНИЕ: определение FeedURL следует в файле H:
NSURL *feedURL;
затем
@property (nonatomic, retain) NSURL *feedURL;
затем в файле M:
@synthesize feedURL;
Спасибо за помощь, ребята, я, наконец, решил просто перезапустить все обновление, поскольку проект превратился в беспорядок из переработанного кода, и я не мог быть уверен, что сработало, а что нет. В результате на этот вопрос нет четкого ответа, но я полагаю, что Фрэнкс, вероятно, был самым близким, поэтому я отмечу это как ответ.
Комментарии:
1. Есть несколько вещей, на которые нужно обратить внимание: 1) Может ли testViewController.feedURL сохранить то, что на нем установлено 2) один и тот же экземпляр testViewController переносится в представление, чтобы его viewDidLoad мог получить доступ к тому, что устанавливается в его feedURL?
2. Я обновил вопрос определением feedURL, оно находится в файле H M с множеством других объявлений, поэтому я опубликовал только соответствующие части. Ошибок не возникает, поэтому я должен предположить, что feedURL настроен нормально.
Ответ №1:
NSURL автоматически выпускается, вам нужно будет сохранить его самостоятельно
Назначьте NSURL для feedURL, например
self.testViewController.feedURL = [[NSURL URLWithString:[collection objectForKey:@"Listings"]] retain];
Это также будет означать, что вам придется освободить его самостоятельно.