2010-07-09 16 views
0

Я написал несколько приложений для iphone сейчас, но все они написаны в том, что я считаю ленивым, неструктурированным способом.разделить iphone объектно-код на несколько файлов

Я начал новый проект и создал несколько классов Objective-C (подкласс NSObject). проблема в том, что я правильно понял логику в своей голове. Моя структура выглядит следующим образом

viewController.h 
viewController.m 
plotPoints.h 
plotPoints.m 
handleFeeds.h 
handleFeeds.m 

Так главный файл является контроллером представления, и я включить в это файл заголовок других классов. Моя проблема в том, что в других файлах классов, например plotPoints.m - если я попытаюсь обратиться к переменной, установленной в контроллере представления, она говорит, что она не установлена. Я включил viewcontroller в файл plotPoints.h, но все равно он не работает.

Какова наилучшая практика для разделения кода таким образом? В этом примере у меня есть каналы webservice, которые я хочу обрабатывать в одном классе, а затем обрабатывать эти результаты в другом и обрабатывать основной пользовательский интерфейс в контроллере представления.

Благодарим за любую информацию.

+0

Можете ли вы сократить код на короткий пример, который не работает? Существует много вариантов, таких как глобальные переменные, делегаты, объявления внешних переменных ... В качестве примечания я бы рекомендовал имена файлов начинать с прописных букв, как и имена классов. – Eiko

+0

Хм ... нет кода. Я посмотрю, есть ли что-нибудь, что я могу опубликовать. Мои файлы классов фактически капитализированы, я был просто ленив при повторной печати! –

ответ

0

Я говорю, что с контроллером не следует ссылаться на ваш - как я понимаю - внешние классы (plotPoints и handleFeeds, кстати, они обязательно должны начинаться с символа верхнего регистра).

На самом деле, это должно быть абсолютно противоположное, ваш viewController должен использовать методы и свойства ваших внешних классов. PlotPoints и HandleFeeds не должны ссылаться на переменные экземпляра вашего контроллера, пусть они передают их как аргументы для ваших методов.

+0

Так что, на мой взгляд, контроллер должен включать внешние классы. эти классы затем содержат функции, которые я вызываю из контроллера вида. Итак, если у меня есть mapview в контроллере представления, где я объявляю для этого iboutlet? В настоящее время я использую его в файле viewcontroller.h. Я попытался объявить его в plotpoints.h, но я не вижу его в построителе интерфейса. Спасибо за ваш ответ. –

+0

Я вижу. Возможно, вы можете попробовать добавить IBOutlet к вашему карте в другом классе, но если вы это сделаете, вам может потребоваться добавить экземпляр вашего вспомогательного класса в ваш .xib (перетащив его из библиотеки внутри «YourFile.xib» " окно). Затем вам нужно будет добавить выход в свой ViewController к вашему вспомогательному классу. Это достаточно ясно? – scalbatty

Смежные вопросы