2013-02-24 57 views
0

我想学iOS的Objective-C。我试图研究这一点,但我不能使用正确的关键字。使用一种方法代替很多

我有几个标签被简单地命名,Label1的,Label2的,等我也有一吨的代码基本上看起来相同,除了标签#的变化。我可以构建一种方法并将数字传递给它并显着缩小我的应用程序吗?

回答

1

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

+0

谢谢。当你说'或另一种类型的集合'时,除了数组之外,其他类型是什么? – tcison 2013-03-23 14:07:46

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建议,你可以收集在collectionm也许是一个NSArray所有CisonLabels。

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

你本能的声音:抽象出共同的行为为一类,并避免重复自己。

+0

非常感谢,但我对你的回答Mark有些困惑。第一种方法更新一个标签,而第二个方法更新所有标签?在第一个方面,标识符是否可以理解?就像你调用它时发送该方法的参数一样?第二,因为标签都在新类中,它是否会自动对它们执行方法“更新”?请澄清。 – tcison 2013-03-23 14:14:37