使用一种方法代替许多方法

时间:2013-02-24 17:03:20

标签: ios objective-c objectid object-identity

我正在尝试为iOS学习Objective-C。我试过研究这个,但我不能使用正确的关键字。

我有几个简单命名的标签,Label1,Label2等。除了Label#更改外,我还有大量的代码看起来基本相同。我可以构建一个方法并将数字传递给它并显着缩小我的应用程序吗?

2 个答案:

答案 0 :(得分:1)

您可能希望将这些对象放在NSArray或其他类型的集合中。然后,您将能够遍历内容并对每个元素执行相同的操作。

答案 1 :(得分:0)

考虑定义一个新类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建议的那样,你可以在一个集合中收集你所有的CisonLabel,也许是NSArray。

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

你的直觉是合理的:将共享行为抽象出来,避免重复自己。