1.Где я должен объявить полученные данные?Мой класс контроллеров?Третий класс?
Он должен быть объявлен в том же классе, что и этот метод, чтобы этот метод мог его использовать.От вашего вопроса, похоже, что этот класс является вашим классом URLDelegate.Поскольку это явно объясняется в комментарии как «переменная экземпляра», «в другом месте» должен быть собственным заголовком этого класса в блоке переменных экземпляра класса.
2.Могу ли я просто объявить это как любую обычную переменную NSMutableData?
Да.См. соответствующую главу языка программирования Objective-C .
3.Как я могу дать своему классу URLDelegate «доступ» к этой переменной?
Классы не могут обращаться к переменным экземпляра в своих экземплярах, поскольку они являются переменными экземпляра;по определению, они являются частью и, следовательно, доступны только для экземпляров.
Экземпляры обращаются к своим переменным экземпляра так же, как к любой локальной или глобальной переменной, как показано в примере кода, на который вы ссылались:
receivedData = [[NSMutableData data] retain];
receivedData
- переменная экземпляра, которую вы объявите в своем классе URLDelegate.Обратите внимание, что вы просто используете имя «receiveData» само по себе;вам не нужно использовать какой-либо специальный синтаксис для ссылки на переменную экземпляра, а не на другую переменную.По этой причине избегайте присвоения переменной экземпляра и локальной переменной одного и того же имени.
Существует несколько способов сделать данные доступными для контроллера приложения.Простым было бы выставить свойство URLDelegate, но это приводит к вопросу о том, как контроллер приложения должен знать, чтобы получить или повторно получить значение свойства.Более полный список решений приведен в главе «Общение с объектами» Руководства по основам какао .