2010-10-26 6 views
0

Я только что реализовал iAds в приложении с несколькими отличными UIViewControllers. У меня есть методы делегатов в каждом из них для - (void)bannerViewDidLoadAd:(ADBannerView *)banner и - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error, которые показывают и скрывают баннер вместе с методом настройки, который создает баннер во время viewDidLoad.Методы повторного использования в нескольких классах

Я сделал это, получая все работает в первом UIViewController, а затем скопировать код для каждого из других контроллеров, наряду с ivar деклараций, свойств и т.д. ...

Это не может быть правильным , Каждый раз, когда я меняю один, я должен изменить их все. Мой вопрос (наконец!): Есть ли способ написать эти методы один раз, чтобы все классы имели к ним доступ?

Спасибо!

ответ

0

Я рекомендую создать функцию c, если подкласс не имеет смысла.

Если эта функция сопровождает другие связанные функции, поместите ее в библиотеку со своими родственниками. если список становится длинным, класс может быть лучшим выбором.

Если эта функция является автономной и специфичной для одного приложения/проекта, то просто создайте файл, который объявит все эти нечетные биты (если они должны быть повторно использованы для нескольких переводов). если файл бит действительно большой, вероятно, есть несколько проблем с дизайном.

Некоторые люди могут рекомендовать метод экземпляра категории objc. я вообще избегаю категорий, потому что вероятность ошибки неоправданно высока. Функции и типы C и C++ связаны и легко удаляются, если на них не ссылаются. с категорией, которую вы не связываете, и она и символы, используемые в методе, не должны быть удалены.

Вы можете включить это как метод экземпляра для вашего синглтона, если эти два концептуально (или физически) связаны. в противном случае я рекомендую хранить их отдельно.

+0

Не могли бы вы уточнить? Где будет находиться функция C? У меня есть одноэлементный объект, который заботится о сохранении состояния и т. Д. - может ли быть функция C (я ожидал бы хотя бы двух из них)? Могу ли я передать экземпляр «adBanner» для его обработки? – Steve

+0

@Steve response updated – justin

+0

Спасибо, Джастин. Я никогда не программировал C/C++, прежде чем начинать использовать ObjC, поэтому я постоянно чувствую, что начинаю с нуля. Я никогда не слышал о категории. Я собираюсь попробовать и поместить методы в свой собственный файл и импортировать этот файл в каждый контроллер представления - следите за обновлениями! – Steve

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