Используя один метод вместо многих

Я пытаюсь изучить Objective-C для iOS. Я пытался исследовать это, но я не должен использовать правильные ключевые слова.

У меня есть несколько ярлыков, которые просто названы, Label1, Label2 и т. Д. У меня также есть тонна кода, которая в основном выглядит одинаково, за исключением изменений Label#. Могу ли я создать один метод, передать ему число и значительно уменьшить свое приложение?

2 ответа

Решение

Вы, вероятно, хотите иметь эти объекты в NSArray или другом типе коллекции. После этого вы сможете циклически просматривать содержимое и выполнять ту же операцию для каждого элемента.

Рассмотрите возможность определения нового класса CisonLabel, который абстрагирует общее поведение этих меток. CisonLabel содержит элемент управления, а также связанные с ним данные. Так вы бы сказали

  CisonLabel *label1=[CisonLabel for: self.labelControl1 withIdentifier: 1];
  CisonLabel *label2=[CisonLabel for: self.labelControl2 withIdentifier: 2];

CisonLabel будет иметь такие методы, как:

 - (void) update;  // sets the label text, based on the identifier

Как предполагает DRiis, вы можете собрать все свои CisonLabels в коллекцию, возможно, NSArray.

 - (void) updateLabels: (NSArray*) theLabels
 {
     for(CisonLabel *label in theLabels) [label update]; 
 }

Ваш инстинкт здоров: абстрагируйте общее поведение в классе и избегайте повторения.

Другие вопросы по тегам