Используя один метод вместо многих
Я пытаюсь изучить 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];
}
Ваш инстинкт здоров: абстрагируйте общее поведение в классе и избегайте повторения.